#ifdef HAVE_CONFIG_H # include #endif #include "aqhome/serial.h" #include #include #include #include #include #include int testRecv() { AQH_SERIAL *sr; int rv; int i; GWEN_BUFFER *dbuf; fprintf(stdout, "Opening device...\n"); sr=AQH_Serial_new("/dev/ttyUSB0", 240); rv=AQH_Serial_Open(sr); if (rv<0) { DBG_ERROR(NULL, "ERROR opening device (%d)", rv); AQH_Serial_free(sr); return 2; } fprintf(stdout, "Device open, waiting for packets\n"); dbuf=GWEN_Buffer_new(0, 256, 0, 1); for (i=0; ; i++) { uint8_t buffer[1024]; GWEN_TIME *ti; fprintf(stdout, "Waiting for packet...\n"); rv=AQH_Serial_Recv(sr, buffer, sizeof(buffer)-1); if (rv<0) break; ti=GWEN_CurrentTime(); GWEN_Time_toString(ti, "YYYY-MM-DD hh:mm:ss", dbuf); fprintf(stdout, "%s: Received:\n", GWEN_Buffer_GetStart(dbuf)); GWEN_Text_DumpString(buffer, rv, 2); GWEN_Time_free(ti); GWEN_Buffer_Reset(dbuf); fprintf(stdout, "\n"); } GWEN_Buffer_free(dbuf); AQH_Serial_Close(sr); AQH_Serial_free(sr); return 0; } int testSend() { AQH_SERIAL *sr; int rv; int i; GWEN_BUFFER *dbuf; uint8_t sendBuf[5]={0x01, 0x02, 0xdb, 0x00, 0xd8 }; uint8_t sendBuf2[2]={0x02, 0xdb }; fprintf(stdout, "Opening device...\n"); sr=AQH_Serial_new("/dev/ttyUSB0", 240); rv=AQH_Serial_Open(sr); if (rv<0) { DBG_ERROR(NULL, "ERROR opening device (%d)", rv); AQH_Serial_free(sr); return 2; } fprintf(stdout, "Device open, waiting for packets\n"); dbuf=GWEN_Buffer_new(0, 256, 0, 1); for (i=0; ; i++) { GWEN_TIME *ti; //rv=AQH_Serial_Send(sr, sendBuf, sizeof(sendBuf)); rv=AQH_Serial_SendPacket(sr, 1, sendBuf2, sizeof(sendBuf2)); if (rv<0) break; ti=GWEN_CurrentTime(); GWEN_Time_toString(ti, "YYYY-MM-DD hh:mm:ss", dbuf); fprintf(stdout, "%s: Packet %d sent.\n", GWEN_Buffer_GetStart(dbuf), i); GWEN_Time_free(ti); GWEN_Buffer_Reset(dbuf); sleep(3); } GWEN_Buffer_free(dbuf); AQH_Serial_Close(sr); AQH_Serial_free(sr); return 0; } void _packetReceived(AQH_SERIAL *sr, const uint8_t *ptr, uint8_t len) { GWEN_BUFFER *dbuf; GWEN_TIME *ti; dbuf=GWEN_Buffer_new(0, 256, 0, 1); ti=GWEN_CurrentTime(); GWEN_Time_toString(ti, "YYYY-MM-DD hh:mm:ss", dbuf); fprintf(stdout, "- %s: Received:\n", GWEN_Buffer_GetStart(dbuf)); GWEN_Text_DumpString(ptr, len, 2); GWEN_Time_free(ti); GWEN_Buffer_free(dbuf); } int testLoop() { AQH_SERIAL *sr; int rv; int i; GWEN_BUFFER *dbuf; uint8_t sendBuf[5]={0x01, 0x02, 0xdb, 0x00, 0xd8 }; uint8_t sendBuf2[2]={0x02, 0xdb }; time_t tLast; fprintf(stdout, "Opening device...\n"); sr=AQH_Serial_new("/dev/ttyUSB0", 240); rv=AQH_Serial_Open(sr); if (rv<0) { DBG_ERROR(NULL, "ERROR opening device (%d)", rv); AQH_Serial_free(sr); return 2; } fprintf(stdout, "Device open, waiting for packets\n"); AQH_Serial_SetPacketReceivedFn(sr, _packetReceived); tLast=time(NULL); for (;;) { time_t t; rv=AQH_Serial_Loop(sr); if (rv<0) { AQH_Serial_Close(sr); AQH_Serial_free(sr); break; } t=time(NULL); if (difftime(t, tLast)>10) { rv=AQH_Serial_StartWriting(sr, sendBuf, 5); if (rv==0) fprintf(stdout, "+ Sending data\n"); else if (rv==GWEN_ERROR_TRY_AGAIN) fprintf(stdout, "W Outbuffer busy\n"); else { DBG_ERROR(NULL, "here (%d)", rv); AQH_Serial_Close(sr); AQH_Serial_free(sr); return rv; } tLast=t; } } return 0; } int main(void) { //return testRecv(); //return testSend(); return testLoop(); }