Backing up an unused program in case of future need

Dependencies:   mbed

Committer:
andrewboyson
Date:
Fri Apr 15 09:03:54 2016 +0000
Revision:
1:94282484baae
Parent:
0:09f915e6f9f6
Child:
2:06fa34661f19
Streamed the log in chunks to allow the send buffer to be reduced. That in turn allowed the log buffer to be increased.; Added content type text/html to http responses.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
andrewboyson 0:09f915e6f9f6 1 #include "mbed.h"
andrewboyson 0:09f915e6f9f6 2 #include "esp.h"
andrewboyson 0:09f915e6f9f6 3 #include "at.h"
andrewboyson 0:09f915e6f9f6 4 #include "wifi.h"
andrewboyson 0:09f915e6f9f6 5 #include "log.h"
andrewboyson 0:09f915e6f9f6 6 #include "io.h"
andrewboyson 0:09f915e6f9f6 7
andrewboyson 0:09f915e6f9f6 8 #define SSID "Andrew and Kate"
andrewboyson 0:09f915e6f9f6 9 #define PASSWORD "Hopeless"
andrewboyson 0:09f915e6f9f6 10
andrewboyson 0:09f915e6f9f6 11
andrewboyson 0:09f915e6f9f6 12 int WifiStatus;
andrewboyson 0:09f915e6f9f6 13
andrewboyson 0:09f915e6f9f6 14 #define AM_STOPPING 0
andrewboyson 0:09f915e6f9f6 15 #define AM_STARTING 1
andrewboyson 0:09f915e6f9f6 16 #define AM_AUTOBAUDING 2
andrewboyson 0:09f915e6f9f6 17 #define AM_BAUDING 3
andrewboyson 0:09f915e6f9f6 18 #define AM_CONNECTING 4
andrewboyson 0:09f915e6f9f6 19 #define AM_MUXING 5
andrewboyson 0:09f915e6f9f6 20 #define AM_STARTED 6
andrewboyson 0:09f915e6f9f6 21 static int am = AM_STOPPING;
andrewboyson 0:09f915e6f9f6 22 int WifiStarted() { return am == AM_STARTED; }
andrewboyson 0:09f915e6f9f6 23
andrewboyson 0:09f915e6f9f6 24 int WifiMain()
andrewboyson 0:09f915e6f9f6 25 {
andrewboyson 0:09f915e6f9f6 26 if (AtBusy()) return 0;
andrewboyson 0:09f915e6f9f6 27
andrewboyson 0:09f915e6f9f6 28 static int result = AT_NONE;
andrewboyson 0:09f915e6f9f6 29 static int autoBaud = 1;
andrewboyson 0:09f915e6f9f6 30
andrewboyson 0:09f915e6f9f6 31 static int autoBaudSucceeded = false;
andrewboyson 0:09f915e6f9f6 32
andrewboyson 0:09f915e6f9f6 33 switch (am)
andrewboyson 0:09f915e6f9f6 34 {
andrewboyson 0:09f915e6f9f6 35 case AM_STOPPING:
andrewboyson 0:09f915e6f9f6 36 AtResetAndStop();
andrewboyson 0:09f915e6f9f6 37 am = AM_STARTING;
andrewboyson 0:09f915e6f9f6 38 result = AT_NONE;
andrewboyson 0:09f915e6f9f6 39 break;
andrewboyson 0:09f915e6f9f6 40 case AM_STARTING:
andrewboyson 0:09f915e6f9f6 41 switch (result)
andrewboyson 0:09f915e6f9f6 42 {
andrewboyson 0:09f915e6f9f6 43 case AT_NONE:
andrewboyson 0:09f915e6f9f6 44 AtReleaseResetAndStart(&result);
andrewboyson 0:09f915e6f9f6 45 break;
andrewboyson 0:09f915e6f9f6 46 case AT_SUCCESS:
andrewboyson 0:09f915e6f9f6 47 switch (WifiStatus)
andrewboyson 0:09f915e6f9f6 48 {
andrewboyson 0:09f915e6f9f6 49 case WIFI_GOT_IP:
andrewboyson 0:09f915e6f9f6 50 am = AM_MUXING;
andrewboyson 0:09f915e6f9f6 51 result = AT_NONE;
andrewboyson 0:09f915e6f9f6 52 break;
andrewboyson 0:09f915e6f9f6 53 default:
andrewboyson 0:09f915e6f9f6 54 LogF("Started WiFi and expected WIFI_GOT_IP but had %d", WifiStatus);
andrewboyson 0:09f915e6f9f6 55 return -1;
andrewboyson 0:09f915e6f9f6 56 }
andrewboyson 0:09f915e6f9f6 57 break;
andrewboyson 0:09f915e6f9f6 58 default:
andrewboyson 0:09f915e6f9f6 59 switch (WifiStatus)
andrewboyson 0:09f915e6f9f6 60 {
andrewboyson 0:09f915e6f9f6 61 case WIFI_READY:
andrewboyson 0:09f915e6f9f6 62 am = AM_CONNECTING;
andrewboyson 0:09f915e6f9f6 63 result = AT_NONE;
andrewboyson 0:09f915e6f9f6 64 break;
andrewboyson 0:09f915e6f9f6 65 default:
andrewboyson 0:09f915e6f9f6 66 am = AM_AUTOBAUDING;
andrewboyson 0:09f915e6f9f6 67 result = AT_NONE;
andrewboyson 0:09f915e6f9f6 68 autoBaud = 1;
andrewboyson 0:09f915e6f9f6 69 break;
andrewboyson 0:09f915e6f9f6 70 }
andrewboyson 0:09f915e6f9f6 71 break;
andrewboyson 0:09f915e6f9f6 72 }
andrewboyson 0:09f915e6f9f6 73 break;
andrewboyson 0:09f915e6f9f6 74 case AM_AUTOBAUDING:
andrewboyson 0:09f915e6f9f6 75 if (autoBaudSucceeded) return -1;
andrewboyson 0:09f915e6f9f6 76 EspBaud(9600 * autoBaud);
andrewboyson 0:09f915e6f9f6 77 switch (result)
andrewboyson 0:09f915e6f9f6 78 {
andrewboyson 0:09f915e6f9f6 79 case AT_NONE:
andrewboyson 0:09f915e6f9f6 80 AtAt(&result);
andrewboyson 0:09f915e6f9f6 81 break;
andrewboyson 0:09f915e6f9f6 82 case AT_SUCCESS:
andrewboyson 0:09f915e6f9f6 83 autoBaudSucceeded = true;
andrewboyson 0:09f915e6f9f6 84 am = AM_BAUDING;
andrewboyson 0:09f915e6f9f6 85 result = AT_NONE;
andrewboyson 0:09f915e6f9f6 86 break;
andrewboyson 0:09f915e6f9f6 87 default:
andrewboyson 0:09f915e6f9f6 88 if (autoBaud == 16)
andrewboyson 0:09f915e6f9f6 89 {
andrewboyson 0:09f915e6f9f6 90 LogCrLf("Could not connect to ESP");
andrewboyson 0:09f915e6f9f6 91 return -1;
andrewboyson 0:09f915e6f9f6 92 }
andrewboyson 0:09f915e6f9f6 93 autoBaud++;
andrewboyson 0:09f915e6f9f6 94 result = AT_NONE;
andrewboyson 0:09f915e6f9f6 95 break;
andrewboyson 0:09f915e6f9f6 96 }
andrewboyson 0:09f915e6f9f6 97 break;
andrewboyson 0:09f915e6f9f6 98 case AM_BAUDING:
andrewboyson 0:09f915e6f9f6 99 switch (result)
andrewboyson 0:09f915e6f9f6 100 {
andrewboyson 0:09f915e6f9f6 101 case AT_NONE:
andrewboyson 0:09f915e6f9f6 102 AtBaud(BAUD, &result);
andrewboyson 0:09f915e6f9f6 103 break;
andrewboyson 0:09f915e6f9f6 104 case AT_SUCCESS:
andrewboyson 0:09f915e6f9f6 105 EspBaud(BAUD);
andrewboyson 0:09f915e6f9f6 106 am = AM_STOPPING;
andrewboyson 0:09f915e6f9f6 107 result = AT_NONE;
andrewboyson 0:09f915e6f9f6 108 break;
andrewboyson 0:09f915e6f9f6 109 default:
andrewboyson 0:09f915e6f9f6 110 LogCrLf("Could not change baud");
andrewboyson 0:09f915e6f9f6 111 return -1;
andrewboyson 0:09f915e6f9f6 112 }
andrewboyson 0:09f915e6f9f6 113 break;
andrewboyson 0:09f915e6f9f6 114 case AM_CONNECTING:
andrewboyson 0:09f915e6f9f6 115 switch (result)
andrewboyson 0:09f915e6f9f6 116 {
andrewboyson 0:09f915e6f9f6 117 case AT_NONE:
andrewboyson 0:09f915e6f9f6 118 AtConnect(SSID, PASSWORD, &result);
andrewboyson 0:09f915e6f9f6 119 break;
andrewboyson 0:09f915e6f9f6 120 case AT_SUCCESS:
andrewboyson 0:09f915e6f9f6 121 am = AM_MUXING;
andrewboyson 0:09f915e6f9f6 122 result = AT_NONE;
andrewboyson 0:09f915e6f9f6 123 break;
andrewboyson 0:09f915e6f9f6 124 default:
andrewboyson 0:09f915e6f9f6 125 LogCrLf("Could not connect to WiFi");
andrewboyson 0:09f915e6f9f6 126 return -1;
andrewboyson 0:09f915e6f9f6 127 }
andrewboyson 0:09f915e6f9f6 128 break;
andrewboyson 0:09f915e6f9f6 129 case AM_MUXING:
andrewboyson 0:09f915e6f9f6 130 switch (result)
andrewboyson 0:09f915e6f9f6 131 {
andrewboyson 0:09f915e6f9f6 132 case AT_NONE:
andrewboyson 0:09f915e6f9f6 133 AtMux(&result);
andrewboyson 0:09f915e6f9f6 134 break;
andrewboyson 0:09f915e6f9f6 135 case AT_SUCCESS:
andrewboyson 0:09f915e6f9f6 136 am = AM_STARTED;
andrewboyson 0:09f915e6f9f6 137 result = AT_NONE;
andrewboyson 0:09f915e6f9f6 138 break;
andrewboyson 0:09f915e6f9f6 139 default:
andrewboyson 0:09f915e6f9f6 140 LogCrLf("Could not set up multiple ids");
andrewboyson 0:09f915e6f9f6 141 return -1;
andrewboyson 0:09f915e6f9f6 142 }
andrewboyson 0:09f915e6f9f6 143 break;
andrewboyson 0:09f915e6f9f6 144 case AM_STARTED:
andrewboyson 0:09f915e6f9f6 145 return 0;
andrewboyson 0:09f915e6f9f6 146 default:
andrewboyson 0:09f915e6f9f6 147 LogF("Unknown \'am\' %d", am);
andrewboyson 0:09f915e6f9f6 148 return -1;
andrewboyson 0:09f915e6f9f6 149 }
andrewboyson 0:09f915e6f9f6 150
andrewboyson 0:09f915e6f9f6 151 return 0;
andrewboyson 0:09f915e6f9f6 152 }