An application to log WiFi SSIDs for position lookup testing

Dependencies:   C027_Support SWO mbed-rtos mbed picojson

Fork of lpc4088_ebb_ublox_Cellular_PubNubDemo_rtos by EmbeddedArtists AB

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers DeviceFeedback.cpp Source File

DeviceFeedback.cpp

00001 #include "DeviceFeedback.h"
00002 #include <stdlib.h>
00003 #include <string.h>
00004 
00005 #define MSG_SHOW_SUCCESS 1
00006 #define MSG_SHOW_FAILURE 2
00007 
00008 DeviceFeedback::DeviceFeedback(PwmOut led) :
00009     _led(led),
00010     _thread(DeviceFeedback::thread_func, this)
00011 {
00012 }
00013 
00014 void DeviceFeedback::showSuccess()
00015 {
00016     sendMessage(MSG_SHOW_SUCCESS);
00017 }
00018 
00019 void DeviceFeedback::showFailure()
00020 {
00021     sendMessage(MSG_SHOW_FAILURE);
00022 }
00023 
00024 void DeviceFeedback::sendMessage(uint8_t msg)
00025 {
00026     uint8_t *msgPtr;
00027     
00028     msgPtr = _mail.alloc();
00029     *msgPtr = msg;
00030     _mail.put(msgPtr);
00031 }
00032 
00033 void DeviceFeedback::thread()
00034 {
00035     osEvent evt; 
00036     uint8_t *msg;
00037     
00038     while (true) {
00039         if ((evt = _mail.get(1000)).status == osEventMail) {
00040             msg = (uint8_t*)evt.value.p;
00041             switch (*msg) {
00042             case MSG_SHOW_SUCCESS:
00043                 for (float i=2000.0; i<10000.0; i+=2000.0) {
00044                     _led.period(1.0/i);
00045                     _led = 0.5;
00046                     Thread::wait(200);
00047                     _led = 0.0;
00048                     Thread::wait(50);
00049                 }
00050                 break;
00051             case MSG_SHOW_FAILURE:
00052                 for (float i=10000.0; i>2000.0; i-=2000.0) {
00053                     _led.period(1.0/i);
00054                     _led = 0.5;
00055                     Thread::wait(200);
00056                     _led = 0.0;
00057                     Thread::wait(50);
00058                 }
00059                 break;
00060             }
00061             _mail.free(msg);
00062         }
00063     }
00064 }
00065 
00066 void DeviceFeedback::thread_func(void const *arg)
00067 {
00068     DeviceFeedback *that;
00069     that = (DeviceFeedback*)arg;
00070     that->thread();
00071 }