//**************************************************************************** // //! Toggles the state of GPIOs(LEDs) //! //! \param LedNum is the enumeration for the GPIO to be toggled //! //! \return none // //**************************************************************************** void ToggleLedState(ledEnum LedNum) { unsigned char ledstate = 0; switch(LedNum) { case LED1: ledstate = GPIO_IF_LedStatus(MCU_RED_LED_GPIO); if(!ledstate) { GPIO_IF_LedOn(MCU_RED_LED_GPIO); } else { GPIO_IF_LedOff(MCU_RED_LED_GPIO); } break; case LED2: ledstate = GPIO_IF_LedStatus(MCU_ORANGE_LED_GPIO); if(!ledstate) { GPIO_IF_LedOn(MCU_ORANGE_LED_GPIO); } else { GPIO_IF_LedOff(MCU_ORANGE_LED_GPIO); } break; case LED3: ledstate = GPIO_IF_LedStatus(MCU_GREEN_LED_GPIO); if(!ledstate) { GPIO_IF_LedOn(MCU_GREEN_LED_GPIO); } else { GPIO_IF_LedOff(MCU_GREEN_LED_GPIO); } break; default: break; } }
//***************************************************************************** // //! Toggle the Led state //! //! \param ledNum is the LED Number //! //! \return none //! //! \brief Toggles a board LED // //***************************************************************************** void GPIO_IF_LedToggle(unsigned char ucLedNum) { unsigned char ucLEDStatus = GPIO_IF_LedStatus(ucLedNum); if(ucLEDStatus == 1) { GPIO_IF_LedOff(ucLedNum); } else { GPIO_IF_LedOn(ucLedNum); } }
void data_conn_handler(struct mg_connection *nc, int ev, void *ev_data) { struct conn_state *cs = (struct conn_state *) nc->user_data; if (cs == NULL) { cs = (struct conn_state *) calloc(1, sizeof(*cs)); nc->user_data = cs; } switch (ev) { case MG_EV_POLL: case MG_EV_TIMER: { const double now = mg_time(); const unsigned char led = GPIO_IF_LedStatus(MCU_RED_LED_GPIO); /* Send if there was a change or repeat last data every second. */ if (s_temp_data.volt != cs->td.volt || s_temp_data.temp != cs->td.temp || now > cs->last_sent_td + 1.0) { memcpy(&cs->td, &s_temp_data, sizeof(cs->td)); send_temp(nc, &cs->td); cs->last_sent_td = now; } if (led != cs->led || now > cs->last_sent_led + 1.0) { send_led(nc, now, led); cs->led = led; cs->last_sent_led = now; } if (s_accel_ctx != NULL) { const struct bm222_sample *ls = s_accel_ctx->data + s_accel_ctx->last_index; if (cs->last_sent_acc == 0) { send_acc_sample(nc, ls); cs->last_sent_acc = ls->ts; } else { double last_sent_ts = send_acc_data_since(nc, s_accel_ctx, cs->last_sent_acc); if (last_sent_ts > 0) cs->last_sent_acc = last_sent_ts; } } nc->ev_timer_time = now + 0.05; break; } case MG_EV_WEBSOCKET_FRAME: { struct websocket_message *wm = (struct websocket_message *) ev_data; process_command(nc, wm->data, wm->size); break; } case MG_EV_CLOSE: { LOG(LL_INFO, ("%p closed", nc)); free(cs); break; } } }
//***************************************************************************** // //! This function gets triggered when HTTP Server receives Application //! defined GET and POST HTTP Tokens. //! //! \param pHttpServerEvent Pointer indicating http server event //! \param pHttpServerResponse Pointer indicating http server response //! //! \return None //! //***************************************************************************** void SimpleLinkHttpServerCallback(SlHttpServerEvent_t *pSlHttpServerEvent, SlHttpServerResponse_t *pSlHttpServerResponse) { unsigned char strLenVal = 0; if(!pSlHttpServerEvent || !pSlHttpServerResponse) { return; } switch (pSlHttpServerEvent->Event) { case SL_NETAPP_HTTPGETTOKENVALUE_EVENT: { unsigned char status, *ptr; ptr = pSlHttpServerResponse->ResponseData.token_value.data; pSlHttpServerResponse->ResponseData.token_value.len = 0; if(memcmp(pSlHttpServerEvent->EventData.httpTokenName.data, GET_token, strlen((const char *)GET_token)) == 0) { status = GPIO_IF_LedStatus(MCU_RED_LED_GPIO); strLenVal = strlen(LED1_STRING); memcpy(ptr, LED1_STRING, strLenVal); ptr += strLenVal; pSlHttpServerResponse->ResponseData.token_value.len += strLenVal; if(status & 0x01) { strLenVal = strlen(LED_ON_STRING); memcpy(ptr, LED_ON_STRING, strLenVal); ptr += strLenVal; pSlHttpServerResponse->ResponseData.token_value.len += strLenVal; } else { strLenVal = strlen(LED_OFF_STRING); memcpy(ptr, LED_OFF_STRING, strLenVal); ptr += strLenVal; pSlHttpServerResponse->ResponseData.token_value.len += strLenVal; } status = GPIO_IF_LedStatus(MCU_GREEN_LED_GPIO); strLenVal = strlen(LED2_STRING); memcpy(ptr, LED2_STRING, strLenVal); ptr += strLenVal; pSlHttpServerResponse->ResponseData.token_value.len += strLenVal; if(status & 0x01) { strLenVal = strlen(LED_ON_STRING); memcpy(ptr, LED_ON_STRING, strLenVal); ptr += strLenVal; pSlHttpServerResponse->ResponseData.token_value.len += strLenVal; } else { strLenVal = strlen(LED_OFF_STRING); memcpy(ptr, LED_OFF_STRING, strLenVal); ptr += strLenVal; pSlHttpServerResponse->ResponseData.token_value.len += strLenVal; } *ptr = '\0'; } } break; case SL_NETAPP_HTTPPOSTTOKENVALUE_EVENT: { unsigned char led; unsigned char *ptr = pSlHttpServerEvent->EventData.httpPostData.token_name.data; if(memcmp(ptr, POST_token, strlen((const char *)POST_token)) == 0) { ptr = pSlHttpServerEvent->EventData.httpPostData.token_value.data; strLenVal = strlen(LED_STRING); if(memcmp(ptr, LED_STRING, strLenVal) != 0) break; ptr += strLenVal; led = *ptr; strLenVal = strlen(LED_ON_STRING); ptr += strLenVal; if(led == '1') { if(memcmp(ptr, LED_ON_STRING, strLenVal) == 0) { GPIO_IF_LedOn(MCU_RED_LED_GPIO); } else { GPIO_IF_LedOff(MCU_RED_LED_GPIO); } } else if(led == '2') { if(memcmp(ptr, LED_ON_STRING, strLenVal) == 0) { GPIO_IF_LedOn(MCU_GREEN_LED_GPIO); } else { GPIO_IF_LedOff(MCU_GREEN_LED_GPIO); } } } } break; default: break; } }