AqHome: Added a test for sending/receiving asynchronously.

This commit is contained in:
Martin Preuss
2023-01-25 21:47:06 +01:00
parent 3ae1fbbe0d
commit 68ce45428f
4 changed files with 273 additions and 3 deletions

View File

@@ -11,6 +11,7 @@
#include <gwenhywfar/buffer.h>
#include <unistd.h>
#include <time.h>
@@ -100,10 +101,82 @@ int testSend()
int main(void)
void _packetReceived(AQH_SERIAL *sr, const uint8_t *ptr, uint8_t len)
{
//return testRecv();
return testSend();
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();
}