From e779036fe278eb8396ae095fc6a9cf04c85de3bd Mon Sep 17 00:00:00 2001 From: helge <helgewurst@web.de> Date: ćšć, 04 11æ 2021 22:12:27 +0800 Subject: [PATCH] introduce weak connectivity and error events --- examples/test-LwIP-netconn/scpi_server.c | 27 ++++++++++++++++++++++++--- examples/test-LwIP-netconn/scpi_server.h | 6 ++++++ 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/examples/test-LwIP-netconn/scpi_server.c b/examples/test-LwIP-netconn/scpi_server.c index df1ebbf..95d5ac7 100644 --- a/examples/test-LwIP-netconn/scpi_server.c +++ b/examples/test-LwIP-netconn/scpi_server.c @@ -113,11 +113,10 @@ iprintf("**ERROR: %ld, \"%s\"\r\n", (int32_t) err, SCPI_ErrorTranslate(err)); if (err != 0) { /* New error */ - /* Beep */ - /* Error LED ON */ + SCPI_Event_ErrorIndicatorOn(context, err); } else { /* No more errors in the queue */ - /* Error LED OFF */ + SCPI_Event_ErrorIndicatorOff(context, err); } return 0; } @@ -248,6 +247,7 @@ netconn_delete(newconn); } else { /* connection established */ + SCPI_Event_DeviceConnected(newconn); iprintf("***Connection established %s\r\n", inet_ntoa(newconn->pcb.ip->remote_ip)); user_data->io = newconn; } @@ -275,6 +275,7 @@ static void closeIo(user_data_t * user_data) { /* connection closed */ + SCPI_Event_DeviceDisconnected(user_data->io); netconn_close(user_data->io); netconn_delete(user_data->io); user_data->io = NULL; @@ -423,3 +424,23 @@ xReturned = xTaskCreate(scpi_server_thread, "SCPI", DEFAULT_THREAD_STACKSIZE, NULL, SCPI_THREAD_PRIO, &xHandle); LWIP_ASSERT("scpi_server_init failed", xReturned == pdPASS); } + +/* Called by processIoListen() for additional reporting. Override on demand. */ +void __attribute__((weak)) SCPI_Event_DeviceConnected(struct netconn * conn) { + /* Remote or Eth LED ON */ +} + +/* Called by closeIO() for additional reporting. Override on demand. */ +void __attribute__((weak)) SCPI_Event_DeviceDisconnected(struct netconn * conn) { + /* Remote or Eth LED OFF */ +} + +/* Called by SCPI_Error() for reporting. Override on demand. */ +void __attribute__((weak)) SCPI_Event_ErrorIndicatorOn(scpi_t * context, int_fast16_t err) { + /* New error : Beep, Error LED ON */ +} + +/* Called by SCPI_Error() for reporting. Override on demand. */ +void __attribute__((weak)) SCPI_Event_ErrorIndicatorOff(scpi_t * context, int_fast16_t err) { + /* No more errors in the queue : Error LED OFF */ +} diff --git a/examples/test-LwIP-netconn/scpi_server.h b/examples/test-LwIP-netconn/scpi_server.h index 1c04dda..50e677c 100644 --- a/examples/test-LwIP-netconn/scpi_server.h +++ b/examples/test-LwIP-netconn/scpi_server.h @@ -42,6 +42,12 @@ void SCPI_AddError(int16_t err); void SCPI_RequestControl(void); +// optional event handlers +void SCPI_Event_DeviceConnected(struct netconn * conn); +void SCPI_Event_DeviceDisconnected(struct netconn * conn); +void SCPI_Event_ErrorIndicatorOn(scpi_t * context, int_fast16_t err); +void SCPI_Event_ErrorIndicatorOff(scpi_t * context, int_fast16_t err); + #ifdef __cplusplus } #endif -- Gitblit v1.9.1