reef monitor
Dependencies: mbed-rtos EthernetInterface FatFileSystemCpp MCP23S17 SDFileSystem mbed
Fork of HTTPServerHelloWorld by
Revision 12:72e0c404017a, committed 2015-01-03
- Comitter:
- wyunreal
- Date:
- Sat Jan 03 17:50:52 2015 +0000
- Parent:
- 11:9366140ebe5f
- Commit message:
- draft of file request handler;
Changed in this revision
--- a/HardwareDrivers/WatchDogTimer/WatchDogTimer.cpp Fri Jan 02 22:44:42 2015 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,18 +0,0 @@ -#include "WatchDogTimer.h" - -int WatchDogTimer::systemResetReason() { - return ((LPC_WDT->WDMOD >> 2) & 1) ? SYSTEM_RESET_WATCH_DOG : SYSTEM_RESET_NORMAL; -} - -WatchDogTimer::WatchDogTimer(float seconds) { - LPC_WDT->WDCLKSEL = 0x1; // Set CLK src to PCLK - uint32_t clk = SystemCoreClock / 16; // WD has a fixed /4 prescaler, PCLK default is /4 - LPC_WDT->WDTC = seconds * (float)clk; // Load WD Timer Constant with value determined by float s - LPC_WDT->WDMOD = 0x3; // Enabled and Reset - feed(); -} - -void WatchDogTimer::feed() { - LPC_WDT->WDFEED = 0xAA; - LPC_WDT->WDFEED = 0x55; -} \ No newline at end of file
--- a/HardwareDrivers/WatchDogTimer/WatchDogTimer.h Fri Jan 02 22:44:42 2015 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,16 +0,0 @@ -#ifndef WATCH_DOG_TIMER_H -#define WATCH_DOG_TIMER_H - -#include "mbed.h" - -#define SYSTEM_RESET_NORMAL 1 -#define SYSTEM_RESET_WATCH_DOG 2 - -class WatchDogTimer { -public: - WatchDogTimer(float seconds); - void feed(); - static int systemResetReason(); -}; - -#endif \ No newline at end of file
--- a/Services/Network/RestApiServer/HttpServer.cpp Fri Jan 02 22:44:42 2015 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,72 +0,0 @@ -#include "HttpServer.h" - -HttpServer::HttpServer() { - listeningThread = NULL; - mainThreadId = osThreadGetId(); -} - -HttpServer::~HttpServer() { - stop(); -} - -void HttpServer::httpServerListeningThread(void const *serverInstance) { - bool stopListening = false; - osThreadId mainThreadId = ((HttpServer*)serverInstance)->getMainThreadId(); - while (!stopListening) { - - - handleServerAliveRequests(mainThreadId); - } -} - -void HttpServer::handleServerAliveRequests(osThreadId mainThreadId) { - osEvent event = Thread::signal_wait(STATUS_CHECK_SIGNAL, STATUS_CHECK_NO_BLOCKING); - if ((event.status == osEventSignal) && (event.value.signals & STATUS_CHECK_SIGNAL)) { - osSignalSet(mainThreadId, STATUS_CHECK_ACK_SIGNAL); - } -} - -bool HttpServer::start() { - if (!listeningThread) { - slaveThreadStatusCounter = 0; - listeningThread = new Thread(&HttpServer::httpServerListeningThread, this); - } - return listeningThread != NULL && listeningThread->get_state() != Thread::Inactive; -} - -bool HttpServer::stop() { - if (listeningThread) { - listeningThread->signal_set(CLOSE_SIGNAL); - unsigned short int waitingShutdownAttempts = 0; - while(waitingShutdownAttempts < WAITING_SHUTDOWN_ATTEMPTS && listeningThread->get_state() != Thread::Inactive) { - Thread::wait(SHUTDOWN_TIMEOUT_MILLIS); - waitingShutdownAttempts++; - } - return listeningThread->get_state() == Thread::Inactive; - } - return true; -} - -bool HttpServer::restart() { - if (stop()) { - return start(); - } else { - return false; - }; -} - -bool HttpServer::isAlive() { - if (listeningThread) { - listeningThread->signal_set(STATUS_CHECK_SIGNAL); - osEvent statusAckEvent = Thread::signal_wait(STATUS_CHECK_ACK_SIGNAL, STATUS_CHECK_TIMEOUT_MILLIS); - if((statusAckEvent.status == osEventSignal) && (statusAckEvent.value.signals & STATUS_CHECK_ACK_SIGNAL)) { - slaveThreadStatusCounter = 0; - } else { - slaveThreadStatusCounter++; - } - if (slaveThreadStatusCounter >= FAULTY_REPORTS_COUNT) { - return false; - } - } - return true; -} \ No newline at end of file
--- a/Services/Network/RestApiServer/HttpServer.h Fri Jan 02 22:44:42 2015 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,40 +0,0 @@ -#ifndef HTTP_SERVER_H -#define HTTP_SERVER_H - -#include "rtos.h" - -class HttpServer { - private: - static const unsigned short int FAULTY_REPORTS_COUNT = 10; - static const unsigned short int STATUS_CHECK_TIMEOUT_MILLIS = 50; - static const unsigned short int STATUS_CHECK_NO_BLOCKING = 0; - static const unsigned short int WAITING_SHUTDOWN_ATTEMPTS = 10; - static const unsigned short int SHUTDOWN_TIMEOUT_MILLIS = 50; - - enum HttpServerSignals{ - // rtos signals are flags, assign values with care - STATUS_CHECK_SIGNAL = 1, - STATUS_CHECK_ACK_SIGNAL = 2, - CLOSE_SIGNAL = 4, - }; - - short unsigned int slaveThreadStatusCounter; - osThreadId mainThreadId; - Thread* listeningThread; - - osThreadId getMainThreadId() {return mainThreadId;} - static void httpServerListeningThread(void const *serverInstance); - static void handleServerAliveRequests(osThreadId mainThreadId); - - public: - HttpServer(); - ~HttpServer(); - - bool start(); - bool stop(); - bool restart(); - - bool isAlive(); -}; - -#endif \ No newline at end of file