NNN40 change mode from AP to STA by HTTP server

Dependencies:   WIFI_API_32kRAM mbed

How to use Demo code

  • Step1: Prepare a router, and set the SSID and Password as follow
  1. SSID: "SSID"
  2. Password: "0123456789"
  • Step2: Burn demo code to NNN40 module.

You can drag and drop the sample code to NNN40 module.

  • Step3: Login module from Http server (192.168.2.1) by PC.

You can set SSID and password by browser. After clicking "confirm" button, the module will change mode from AP to STA, get IP from router

  • DEMO video:
Committer:
lester0507
Date:
Wed Oct 21 05:54:02 2015 +0000
Revision:
14:b007595028e2
Parent:
12:eca9b56155c7
fix bug for ssid underline.

Who changed what in which revision?

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