Webserver only w/o any other functions, single thread. Running on STM32F013+W5500

Dependencies:   NTPClient W5500Interface Watchdog device_configuration eeprom_flash mbed-rpc-nucleo mbed-rtos mbed

Fork of F103-Serial-to-Ethernet by Chau Vo

Committer:
olympux
Date:
Fri Aug 19 20:17:00 2016 +0000
Revision:
47:d92d2c5b8073
Parent:
40:c966abbe2d62
forked to create a new repo for webserver on F103+W5500. No other functions

Who changed what in which revision?

UserRevisionLine numberNew contents of line
olympux 40:c966abbe2d62 1 #include "RequestHandler.h"
olympux 40:c966abbe2d62 2 #include "mbed_rpc.h"
olympux 40:c966abbe2d62 3 #include "RPCObjectManager.h"
olympux 40:c966abbe2d62 4 #include "RPCCommand.h"
olympux 40:c966abbe2d62 5
olympux 40:c966abbe2d62 6 const char* INVALID_CMD = "Invalid RPC command";
olympux 40:c966abbe2d62 7 const char* DELETE_ERROR = "You must send a DELETE request to remove an object ";
olympux 40:c966abbe2d62 8 const char* CREATE_ERROR = "You must send a PUT request to create an object";
olympux 40:c966abbe2d62 9 const char* FUNC_CALL_ERROR = "You must send a GET request to call a function";
olympux 40:c966abbe2d62 10
olympux 40:c966abbe2d62 11 void GetRequestHandler::handle(const RPCCommand& cmd, char *reply)
olympux 40:c966abbe2d62 12 {
olympux 40:c966abbe2d62 13 switch(cmd.get_type())
olympux 40:c966abbe2d62 14 {
olympux 40:c966abbe2d62 15 case DELETE:
olympux 40:c966abbe2d62 16 printf("Error: %s\n", DELETE_ERROR);
olympux 40:c966abbe2d62 17 strcat(reply, DELETE_ERROR);
olympux 40:c966abbe2d62 18 break;
olympux 40:c966abbe2d62 19 case FUNCTION_CALL:
olympux 40:c966abbe2d62 20 RPC::call(cmd.get_cmd(), reply);
olympux 40:c966abbe2d62 21 break;
olympux 40:c966abbe2d62 22 case CREATE:
olympux 40:c966abbe2d62 23 printf("Error: %s\n", CREATE_ERROR);
olympux 40:c966abbe2d62 24 strcat(reply, CREATE_ERROR);
olympux 40:c966abbe2d62 25 break;
olympux 40:c966abbe2d62 26 default:
olympux 40:c966abbe2d62 27 printf("Error: %s\n", INVALID_CMD);
olympux 40:c966abbe2d62 28 strcat(reply, INVALID_CMD);
olympux 40:c966abbe2d62 29 break;
olympux 40:c966abbe2d62 30 }
olympux 40:c966abbe2d62 31 }
olympux 40:c966abbe2d62 32
olympux 40:c966abbe2d62 33 void PutRequestHandler::handle(const RPCCommand& cmd, char *reply)
olympux 40:c966abbe2d62 34 {
olympux 40:c966abbe2d62 35 switch(cmd.get_type())
olympux 40:c966abbe2d62 36 {
olympux 40:c966abbe2d62 37 case DELETE:
olympux 40:c966abbe2d62 38 printf("Error: %s\n", DELETE_ERROR);
olympux 40:c966abbe2d62 39 strcat(reply, DELETE_ERROR);
olympux 40:c966abbe2d62 40 break;
olympux 40:c966abbe2d62 41 case FUNCTION_CALL:
olympux 40:c966abbe2d62 42 printf("Error: %s\n", FUNC_CALL_ERROR);
olympux 40:c966abbe2d62 43 strcat(reply, FUNC_CALL_ERROR);
olympux 40:c966abbe2d62 44 break;
olympux 40:c966abbe2d62 45 case CREATE:
olympux 40:c966abbe2d62 46 RPC::call(cmd.get_cmd(), reply);
olympux 40:c966abbe2d62 47 if(strlen(reply) > 0)
olympux 40:c966abbe2d62 48 {
olympux 40:c966abbe2d62 49 RPCObjectManager::instance().store_object(reply);
olympux 40:c966abbe2d62 50 strcat(reply, " has been created");
olympux 40:c966abbe2d62 51 }
olympux 40:c966abbe2d62 52 else
olympux 40:c966abbe2d62 53 {
olympux 40:c966abbe2d62 54 printf("Error while creating object\n");
olympux 40:c966abbe2d62 55 strcat(reply, "Error while creating object.");
olympux 40:c966abbe2d62 56 }
olympux 40:c966abbe2d62 57 break;
olympux 40:c966abbe2d62 58 default:
olympux 40:c966abbe2d62 59 printf("Error: %s\n", INVALID_CMD);
olympux 40:c966abbe2d62 60 strcat(reply, INVALID_CMD);
olympux 40:c966abbe2d62 61 break;
olympux 40:c966abbe2d62 62 }
olympux 40:c966abbe2d62 63 }
olympux 40:c966abbe2d62 64
olympux 40:c966abbe2d62 65 void DeleteRequestHandler::handle(const RPCCommand& cmd, char *reply)
olympux 40:c966abbe2d62 66 {
olympux 40:c966abbe2d62 67 switch(cmd.get_type())
olympux 40:c966abbe2d62 68 {
olympux 40:c966abbe2d62 69 case CREATE:
olympux 40:c966abbe2d62 70 printf("Error: %s\n", CREATE_ERROR);
olympux 40:c966abbe2d62 71 strcat(reply, CREATE_ERROR);
olympux 40:c966abbe2d62 72 break;
olympux 40:c966abbe2d62 73 case FUNCTION_CALL:
olympux 40:c966abbe2d62 74 printf("Error: %s\n", FUNC_CALL_ERROR);
olympux 40:c966abbe2d62 75 strcat(reply, FUNC_CALL_ERROR);
olympux 40:c966abbe2d62 76 break;
olympux 40:c966abbe2d62 77 case DELETE:
olympux 40:c966abbe2d62 78 RPC::call(cmd.get_cmd(), reply);
olympux 40:c966abbe2d62 79 RPCObjectManager::instance().remove_object(cmd.get_obj_name());
olympux 40:c966abbe2d62 80 strcat(reply, "Deleted object ");
olympux 40:c966abbe2d62 81 strcat(reply, cmd.get_obj_name());
olympux 40:c966abbe2d62 82 break;
olympux 40:c966abbe2d62 83 default:
olympux 40:c966abbe2d62 84 printf("Error: %s\n", INVALID_CMD);
olympux 40:c966abbe2d62 85 strcat(reply, INVALID_CMD);
olympux 40:c966abbe2d62 86 break;
olympux 40:c966abbe2d62 87 }
olympux 40:c966abbe2d62 88 }
olympux 40:c966abbe2d62 89
olympux 40:c966abbe2d62 90 void ComplexRequestHandler::handle(const RPCCommand& cmd, char *reply)
olympux 40:c966abbe2d62 91 {
olympux 40:c966abbe2d62 92 switch(cmd.get_type())
olympux 40:c966abbe2d62 93 {
olympux 40:c966abbe2d62 94 case CREATE :
olympux 40:c966abbe2d62 95 putHandler.handle(cmd, reply);
olympux 40:c966abbe2d62 96 break;
olympux 40:c966abbe2d62 97 case DELETE :
olympux 40:c966abbe2d62 98 deleteHandler.handle(cmd, reply);
olympux 40:c966abbe2d62 99 break;
olympux 40:c966abbe2d62 100 case FUNCTION_CALL :
olympux 40:c966abbe2d62 101 getHandler.handle(cmd, reply);
olympux 40:c966abbe2d62 102 break;
olympux 40:c966abbe2d62 103 default :
olympux 40:c966abbe2d62 104 printf("Error: %s\n", INVALID_CMD);
olympux 40:c966abbe2d62 105 strcat(reply, INVALID_CMD);
olympux 40:c966abbe2d62 106 break;
olympux 40:c966abbe2d62 107 }
olympux 40:c966abbe2d62 108 }
olympux 40:c966abbe2d62 109