#include #include #include #include #include #include #include #include #include uint8_t relayOn[] = { 0x04, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00, 0x13, 0x02, 0x0b, 0x70, 0x07, 0x00, 0x00, 0x01, 0x00 }; uint8_t relayOff[] = { 0x04, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00, 0x13, 0x02, 0x0b, 0x70, 0x07, 0x00, 0x00, 0x00, 0x00 }; uint8_t readBuffer[1024]; static int32_t repeat = 10; static pthread_t readingThread; static bool allowRun = true; static int fd = -1; void* executeReading ( void* arg ) { uint32_t bytesRead; uint32_t i; while ( allowRun ) { bytesRead = read ( fd, readBuffer, sizeof ( readBuffer ) ); if ( bytesRead > 0 ) { printf ( "Received bytes (hex): " ); for ( i = 0; i < bytesRead; i++ ) { printf ( "%02X ", readBuffer[i] ); } printf ( "\n" ); } } pthread_exit ( 0 ); } int main ( int argc, char* argv[] ) { int ret; if ( ( fd = open ( "/dev/mocca0", O_RDWR|O_SYNC ) ) < 0 ) { printf ( "Failed to open mocca0 device\n" ); exit ( -4 ); } ret = pthread_create ( &readingThread, NULL, executeReading, NULL ); if ( ret ) { printf ( "Failed to start reader thread\n" ); } else { while ( --repeat >= 0 ) { write ( fd, relayOn, sizeof ( relayOn ) ); usleep ( 1000000 ); write ( fd, relayOff, sizeof ( relayOff ) ); usleep ( 1000000 ); } } allowRun = false; close ( fd ); return 0; }