modify
Dependencies: Adafruit_GFX Adafruit_ST7735 GMMP_mbed NTPClient SDFileSystem WIZnet_Library mbed
Fork of ThingPlug_Ethernet_Example_temp_V2 by
main.cpp@11:f15177f282a6, 2015-08-15 (annotated)
- Committer:
- irinakim
- Date:
- Sat Aug 15 23:33:44 2015 +0000
- Revision:
- 11:f15177f282a6
- Parent:
- 9:9179158a0fef
TFT_Ethernet
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
lesmin | 0:fdbd2c6947ea | 1 | #include "mbed.h" |
irinakim | 11:f15177f282a6 | 2 | #include "Adafruit_ST7735.h" |
irinakim | 11:f15177f282a6 | 3 | #include "SDFileSystem.h" |
irinakim | 11:f15177f282a6 | 4 | #include "mbed_debug.h" |
irinakim | 11:f15177f282a6 | 5 | |
irinakim | 11:f15177f282a6 | 6 | #define BUTTON_NONE 0 |
irinakim | 11:f15177f282a6 | 7 | #define BUTTON_DOWN 1 |
irinakim | 11:f15177f282a6 | 8 | #define BUTTON_RIGHT 2 |
irinakim | 11:f15177f282a6 | 9 | #define BUTTON_SELECT 3 |
irinakim | 11:f15177f282a6 | 10 | #define BUTTON_UP 4 |
irinakim | 11:f15177f282a6 | 11 | #define BUTTON_LEFT 5 |
lesmin | 0:fdbd2c6947ea | 12 | |
irinakim | 11:f15177f282a6 | 13 | #define BUFFPIXEL 20 |
irinakim | 11:f15177f282a6 | 14 | #define MAX_SIZE 100 |
irinakim | 11:f15177f282a6 | 15 | |
irinakim | 11:f15177f282a6 | 16 | SDFileSystem sd(D11, D12, D13, D4, "sd"); // the pinout on the mbed |
irinakim | 11:f15177f282a6 | 17 | Adafruit_ST7735 tft(D11, D12, D13, D10, D8, D9); // MOSI, MISO, SCLK, SSEL, TFT_DC, TFT_RST |
irinakim | 11:f15177f282a6 | 18 | AnalogIn joystick(A3); |
irinakim | 11:f15177f282a6 | 19 | Serial pc(D1,D0); |
irinakim | 11:f15177f282a6 | 20 | Serial device(D8,D2); |
irinakim | 11:f15177f282a6 | 21 | LocateDef locate; |
irinakim | 11:f15177f282a6 | 22 | LocateDef org; |
irinakim | 11:f15177f282a6 | 23 | uint8_t readButton(void); |
irinakim | 11:f15177f282a6 | 24 | void bmpDraw(char *filename, uint8_t x, uint8_t y); |
irinakim | 11:f15177f282a6 | 25 | char str[MAX_SIZE]; |
irinakim | 11:f15177f282a6 | 26 | char str_l[MAX_SIZE]; |
irinakim | 11:f15177f282a6 | 27 | |
lesmin | 0:fdbd2c6947ea | 28 | |
lesmin | 0:fdbd2c6947ea | 29 | #include "config.h" |
lesmin | 0:fdbd2c6947ea | 30 | |
lesmin | 6:f3e13103ea9d | 31 | #ifdef USE_SNIC_WIFI |
lesmin | 6:f3e13103ea9d | 32 | #include "SNIC_WifiInterface.h" |
lesmin | 6:f3e13103ea9d | 33 | C_SNIC_WifiInterface wifi( D8, D2, NC, NC, D3); |
lesmin | 6:f3e13103ea9d | 34 | #endif//USE_SNIC_WIFI |
lesmin | 6:f3e13103ea9d | 35 | |
lesmin | 6:f3e13103ea9d | 36 | #ifdef USE_WIZNET_W5500 |
lesmin | 6:f3e13103ea9d | 37 | #include "WIZnetInterface.h" |
lesmin | 6:f3e13103ea9d | 38 | WIZnetInterface ethernet(PA_7, PA_6, PA_5, PB_6, PA_9);//scs(PB_6), nRESET(PA_9); // reset pin is dummy, don't affect any pin of WIZ550io |
lesmin | 6:f3e13103ea9d | 39 | #endif//USE_WIZNET_W5500 |
lesmin | 6:f3e13103ea9d | 40 | |
lesmin | 0:fdbd2c6947ea | 41 | /** |
lesmin | 0:fdbd2c6947ea | 42 | * GMMP Test Code |
lesmin | 0:fdbd2c6947ea | 43 | */ |
lesmin | 0:fdbd2c6947ea | 44 | |
lesmin | 0:fdbd2c6947ea | 45 | #include "GMMP.h" |
lesmin | 0:fdbd2c6947ea | 46 | |
lesmin | 0:fdbd2c6947ea | 47 | #define USER_CONTROL_LED 0x80 |
lesmin | 0:fdbd2c6947ea | 48 | |
lesmin | 0:fdbd2c6947ea | 49 | #define HIGH 0x1 |
lesmin | 0:fdbd2c6947ea | 50 | #define LOW 0x0 |
lesmin | 0:fdbd2c6947ea | 51 | |
lesmin | 1:468ac9167975 | 52 | byte serverIp[4] = THINGPLUG_GMMP_IP_ADDR; |
lesmin | 0:fdbd2c6947ea | 53 | const int nServerPort = THINGPLUG_GMMP_PORT_NUM; |
lesmin | 0:fdbd2c6947ea | 54 | const char* pszDomainCode = THINGPLUG_GMMP_SERVICE_NAME; |
lesmin | 0:fdbd2c6947ea | 55 | const char* pszGWAuthID = THINGPLUG_GMMP_DEVICE_SERIAL_NUM; |
lesmin | 0:fdbd2c6947ea | 56 | const char* pszGWMFID = THINGPLUG_GMMP_DEVICE_MANUFACTURER_ID; |
lesmin | 0:fdbd2c6947ea | 57 | const char* pszDeviceMFID = THINGPLUG_GMMP_SUB_DEVICE_MANUFACTURER_ID; |
lesmin | 0:fdbd2c6947ea | 58 | |
lesmin | 0:fdbd2c6947ea | 59 | char* deviceId[LEN_DEVICE_ID]; |
lesmin | 0:fdbd2c6947ea | 60 | unsigned char g_mac[6] = DEFAULT_MAC_ADDR; |
lesmin | 0:fdbd2c6947ea | 61 | |
lesmin | 0:fdbd2c6947ea | 62 | |
lesmin | 0:fdbd2c6947ea | 63 | uint32_t lastDeliverMilli = 0; |
lesmin | 0:fdbd2c6947ea | 64 | uint32_t reportPeriodMilli = 3000; |
lesmin | 0:fdbd2c6947ea | 65 | uint32_t lastHeartbeatMilli = 0; |
lesmin | 0:fdbd2c6947ea | 66 | uint32_t heartbeatPeriodMilli = 10000; |
lesmin | 0:fdbd2c6947ea | 67 | byte regDevCount = 0; |
lesmin | 0:fdbd2c6947ea | 68 | byte regGwCount = 0; |
lesmin | 0:fdbd2c6947ea | 69 | |
lesmin | 0:fdbd2c6947ea | 70 | void startSensingTemp(); |
lesmin | 0:fdbd2c6947ea | 71 | void delay(int d); |
lesmin | 0:fdbd2c6947ea | 72 | |
lesmin | 0:fdbd2c6947ea | 73 | int Recv(GMMPHeader* pstGMMPHeader, void* pBody) |
lesmin | 0:fdbd2c6947ea | 74 | { |
lesmin | 0:fdbd2c6947ea | 75 | U8 cMessageType = pstGMMPHeader->ucMessageType; |
lesmin | 0:fdbd2c6947ea | 76 | |
lesmin | 0:fdbd2c6947ea | 77 | //info(F("MsgType: ")); |
lesmin | 0:fdbd2c6947ea | 78 | //infoln(cMessageType); |
lesmin | 0:fdbd2c6947ea | 79 | INFO("MsgType: %d", cMessageType); |
lesmin | 0:fdbd2c6947ea | 80 | |
lesmin | 0:fdbd2c6947ea | 81 | if (cMessageType == OPERATION_GW_REG_RSP) { |
lesmin | 0:fdbd2c6947ea | 82 | stGwRegistrationRspHdr* pstRspHdr = (stGwRegistrationRspHdr*) pBody; |
lesmin | 0:fdbd2c6947ea | 83 | |
lesmin | 0:fdbd2c6947ea | 84 | if (pstRspHdr->ucResultCode != 0x00) { |
lesmin | 0:fdbd2c6947ea | 85 | //error(F("GWRegRes Error: ")); |
lesmin | 0:fdbd2c6947ea | 86 | //errorln(pstRspHdr->ucResultCode); |
lesmin | 0:fdbd2c6947ea | 87 | ERR("GWRegRes Error: %d", pstRspHdr->ucResultCode); |
lesmin | 0:fdbd2c6947ea | 88 | free(pBody); |
lesmin | 0:fdbd2c6947ea | 89 | return 1; |
lesmin | 0:fdbd2c6947ea | 90 | } |
lesmin | 0:fdbd2c6947ea | 91 | |
lesmin | 0:fdbd2c6947ea | 92 | SetAuthKey((char*) pstGMMPHeader->usAuthKey); |
lesmin | 0:fdbd2c6947ea | 93 | SetGWID((char*) pstRspHdr->usGWID); |
lesmin | 0:fdbd2c6947ea | 94 | infoln(("GWRegRes has been received:")); |
lesmin | 0:fdbd2c6947ea | 95 | infoln(g_szAuthKey); |
lesmin | 0:fdbd2c6947ea | 96 | infoln(GetGWID()); |
lesmin | 0:fdbd2c6947ea | 97 | INFO("GWRegRes has been received:\r\n%s\r\n%s", g_szAuthKey, GetGWID()); |
lesmin | 0:fdbd2c6947ea | 98 | regGwCount++; |
lesmin | 0:fdbd2c6947ea | 99 | |
lesmin | 0:fdbd2c6947ea | 100 | int ret = GO_Profile(GetGWID(), NULL, 0); |
lesmin | 0:fdbd2c6947ea | 101 | |
lesmin | 0:fdbd2c6947ea | 102 | if (ret != GMMP_SUCCESS) { |
lesmin | 0:fdbd2c6947ea | 103 | errorln("ReqProfile Err!!"); |
lesmin | 0:fdbd2c6947ea | 104 | free(pBody); |
lesmin | 0:fdbd2c6947ea | 105 | return 1; |
lesmin | 0:fdbd2c6947ea | 106 | } |
lesmin | 0:fdbd2c6947ea | 107 | |
lesmin | 0:fdbd2c6947ea | 108 | infoln("ProfileReq has been sent."); |
lesmin | 0:fdbd2c6947ea | 109 | } else if (cMessageType == OPERATION_PROFILE_RSP) { |
lesmin | 0:fdbd2c6947ea | 110 | stProfileRspHdr* pstRspHdr = (stProfileRspHdr*) pBody; |
lesmin | 0:fdbd2c6947ea | 111 | |
lesmin | 0:fdbd2c6947ea | 112 | if (pstRspHdr->ucResultCode != 0x00) { |
lesmin | 0:fdbd2c6947ea | 113 | errorln("ProfileRes Error!"); |
lesmin | 0:fdbd2c6947ea | 114 | free(pBody); |
lesmin | 0:fdbd2c6947ea | 115 | return 1; |
lesmin | 0:fdbd2c6947ea | 116 | } |
lesmin | 0:fdbd2c6947ea | 117 | |
lesmin | 0:fdbd2c6947ea | 118 | //infoln(F("ProfileRes has been received:")); |
lesmin | 0:fdbd2c6947ea | 119 | //infoln(Char2int(pstRspHdr->unHeartbeatPeriod, 4)); |
lesmin | 0:fdbd2c6947ea | 120 | //infoln(Char2int(pstRspHdr->unReportOffset, 4)); |
lesmin | 0:fdbd2c6947ea | 121 | //infoln(Char2int(pstRspHdr->unReportPeriod, 4)); |
lesmin | 0:fdbd2c6947ea | 122 | //infoln(Char2int(pstRspHdr->unResponseTimeout, 4)); |
lesmin | 0:fdbd2c6947ea | 123 | INFO("ProfileRes has been received:\r\n%d\r\n%d\r\n%d\r\n%d", |
lesmin | 0:fdbd2c6947ea | 124 | Char2int(pstRspHdr->unHeartbeatPeriod, 4), |
lesmin | 0:fdbd2c6947ea | 125 | Char2int(pstRspHdr->unReportOffset, 4), |
lesmin | 0:fdbd2c6947ea | 126 | Char2int(pstRspHdr->unReportPeriod, 4), |
lesmin | 0:fdbd2c6947ea | 127 | Char2int(pstRspHdr->unResponseTimeout,4) ); |
lesmin | 0:fdbd2c6947ea | 128 | /* 주기값 재설정 |
lesmin | 0:fdbd2c6947ea | 129 | pstRspHdr->unHeartbeatPeriod; |
lesmin | 0:fdbd2c6947ea | 130 | pstRspHdr->unReportOffset; |
lesmin | 0:fdbd2c6947ea | 131 | pstRspHdr->unReportPeriod; |
lesmin | 0:fdbd2c6947ea | 132 | pstRspHdr->unResponseTimeout; |
lesmin | 0:fdbd2c6947ea | 133 | */ |
lesmin | 0:fdbd2c6947ea | 134 | |
lesmin | 0:fdbd2c6947ea | 135 | reportPeriodMilli = Char2int(pstRspHdr->unReportPeriod, 4) * 1000 * 60; |
lesmin | 0:fdbd2c6947ea | 136 | //reportPeriodMilli = Char2int(pstRspHdr->unReportPeriod, 4) * 300; |
lesmin | 0:fdbd2c6947ea | 137 | heartbeatPeriodMilli = Char2int(pstRspHdr->unHeartbeatPeriod, 4) * 1000 * 60; |
lesmin | 0:fdbd2c6947ea | 138 | |
lesmin | 0:fdbd2c6947ea | 139 | long nHeartBeat = Char2int((char*) pstRspHdr->unHeartbeatPeriod, sizeof(pstGMMPHeader->usTID)); //수신받은 Heartbeat 주기 값을 확인. |
lesmin | 0:fdbd2c6947ea | 140 | |
lesmin | 0:fdbd2c6947ea | 141 | //Profile 요청 수신 값에 Heartbeat 주기 값으로 변경 |
lesmin | 0:fdbd2c6947ea | 142 | if (nHeartBeat > 0) { |
lesmin | 0:fdbd2c6947ea | 143 | //nTimerSec = nHeartBeat; |
lesmin | 0:fdbd2c6947ea | 144 | } |
lesmin | 0:fdbd2c6947ea | 145 | |
lesmin | 0:fdbd2c6947ea | 146 | int ret = GO_Reg(GetGWID(), pszDeviceMFID); |
lesmin | 0:fdbd2c6947ea | 147 | |
lesmin | 0:fdbd2c6947ea | 148 | if (ret != GMMP_SUCCESS) { |
lesmin | 0:fdbd2c6947ea | 149 | errorln("DevRegReq Err!!"); |
lesmin | 0:fdbd2c6947ea | 150 | free(pBody); |
lesmin | 0:fdbd2c6947ea | 151 | return 1; |
lesmin | 0:fdbd2c6947ea | 152 | } |
lesmin | 0:fdbd2c6947ea | 153 | |
lesmin | 0:fdbd2c6947ea | 154 | infoln("DevRegReq has been sent."); |
lesmin | 0:fdbd2c6947ea | 155 | } else if (cMessageType == OPERATION_DEVICE_REG_RSP) { |
lesmin | 0:fdbd2c6947ea | 156 | stDeviceRegistrationRspHdr* pstRspHdr = (stDeviceRegistrationRspHdr*) pBody; |
lesmin | 0:fdbd2c6947ea | 157 | |
lesmin | 0:fdbd2c6947ea | 158 | if (pstRspHdr->ucResultCode != 0x00) { |
lesmin | 0:fdbd2c6947ea | 159 | errorln("DevRegRes Error!"); |
lesmin | 0:fdbd2c6947ea | 160 | free(pBody); |
lesmin | 0:fdbd2c6947ea | 161 | return 1; |
lesmin | 0:fdbd2c6947ea | 162 | } |
lesmin | 0:fdbd2c6947ea | 163 | |
lesmin | 0:fdbd2c6947ea | 164 | if (strlen((char*) pstRspHdr->usDeviceID) <= 0) { |
lesmin | 0:fdbd2c6947ea | 165 | errorln("No DeviceID!"); |
lesmin | 0:fdbd2c6947ea | 166 | free(pBody); |
lesmin | 0:fdbd2c6947ea | 167 | return 1; |
lesmin | 0:fdbd2c6947ea | 168 | } |
lesmin | 0:fdbd2c6947ea | 169 | |
lesmin | 0:fdbd2c6947ea | 170 | int len = strlen((char*) pstRspHdr->usDeviceID); |
lesmin | 0:fdbd2c6947ea | 171 | memset(deviceId, 0, LEN_DEVICE_ID); |
lesmin | 0:fdbd2c6947ea | 172 | memcpy(deviceId, pstRspHdr->usDeviceID, len); |
lesmin | 0:fdbd2c6947ea | 173 | infoln("DevRegRes has been received:"); |
lesmin | 0:fdbd2c6947ea | 174 | infoln((char*) deviceId); |
lesmin | 0:fdbd2c6947ea | 175 | regDevCount++; |
lesmin | 0:fdbd2c6947ea | 176 | |
lesmin | 0:fdbd2c6947ea | 177 | } else if (cMessageType == OPERATION_DELIVERY_RSP) { |
lesmin | 0:fdbd2c6947ea | 178 | stPacketDeliveryRspHdr* pstRspHdr = (stPacketDeliveryRspHdr*) pBody; |
lesmin | 0:fdbd2c6947ea | 179 | |
lesmin | 0:fdbd2c6947ea | 180 | if (pstRspHdr->ucResultCode != 0x00) { |
lesmin | 0:fdbd2c6947ea | 181 | // errorln("DeliverRes Err!!"); |
lesmin | 0:fdbd2c6947ea | 182 | ERR("DeliverRes Err(0x%2x)!!", pstRspHdr->ucResultCode); //lesmin |
lesmin | 0:fdbd2c6947ea | 183 | free(pBody); |
lesmin | 0:fdbd2c6947ea | 184 | return 1; |
lesmin | 0:fdbd2c6947ea | 185 | } |
lesmin | 0:fdbd2c6947ea | 186 | |
lesmin | 0:fdbd2c6947ea | 187 | infoln("DeliveryRes has been received."); |
lesmin | 0:fdbd2c6947ea | 188 | } else if (pstGMMPHeader->ucMessageType == OPERATION_HEARTBEAT_RSP) { |
lesmin | 0:fdbd2c6947ea | 189 | //stHeartBeatMsgRspHdr* pstRspHdr = (stHeartBeatMsgRspHdr*) pBody; |
lesmin | 0:fdbd2c6947ea | 190 | |
lesmin | 0:fdbd2c6947ea | 191 | infoln("HeartbeatRes has been received."); |
lesmin | 0:fdbd2c6947ea | 192 | } else if (cMessageType == OPERATION_CONTROL_REQ) { |
lesmin | 0:fdbd2c6947ea | 193 | stControlReqHdr* pstReqHdr = (stControlReqHdr*) pBody; |
lesmin | 0:fdbd2c6947ea | 194 | |
lesmin | 0:fdbd2c6947ea | 195 | infoln("ControlReq has been received."); |
lesmin | 0:fdbd2c6947ea | 196 | |
lesmin | 0:fdbd2c6947ea | 197 | char cResult = 0x00; |
lesmin | 0:fdbd2c6947ea | 198 | |
lesmin | 0:fdbd2c6947ea | 199 | int len = 0; |
lesmin | 0:fdbd2c6947ea | 200 | if (pstReqHdr->usMessageBody) { |
lesmin | 0:fdbd2c6947ea | 201 | len = strlen((char*) pstReqHdr->usMessageBody); |
lesmin | 0:fdbd2c6947ea | 202 | } |
lesmin | 0:fdbd2c6947ea | 203 | if (len > 0) { |
lesmin | 0:fdbd2c6947ea | 204 | info("Control Msg Body: "); |
lesmin | 0:fdbd2c6947ea | 205 | infoln((char*) pstReqHdr->usMessageBody); |
lesmin | 0:fdbd2c6947ea | 206 | } |
lesmin | 0:fdbd2c6947ea | 207 | |
lesmin | 0:fdbd2c6947ea | 208 | long nTID = Char2int((char*) pstGMMPHeader->usTID, sizeof(pstGMMPHeader->usTID)); |
lesmin | 0:fdbd2c6947ea | 209 | |
lesmin | 0:fdbd2c6947ea | 210 | //debug(F("Received TID: ")); |
lesmin | 0:fdbd2c6947ea | 211 | //debugln(nTID); |
lesmin | 0:fdbd2c6947ea | 212 | DBG("Received TID: %d\r\n", nTID); |
lesmin | 0:fdbd2c6947ea | 213 | |
lesmin | 0:fdbd2c6947ea | 214 | int ret = GO_Control((char*) pstReqHdr->usGWID, (char*) pstReqHdr->usDeviceID, nTID, |
lesmin | 0:fdbd2c6947ea | 215 | (char)pstReqHdr->ucControlType, cResult); |
lesmin | 0:fdbd2c6947ea | 216 | |
lesmin | 0:fdbd2c6947ea | 217 | if (ret != GMMP_SUCCESS) { |
lesmin | 0:fdbd2c6947ea | 218 | errorln("ControRes Err!!"); |
lesmin | 0:fdbd2c6947ea | 219 | free(pBody); |
lesmin | 0:fdbd2c6947ea | 220 | return 1; |
lesmin | 0:fdbd2c6947ea | 221 | } |
lesmin | 0:fdbd2c6947ea | 222 | |
lesmin | 0:fdbd2c6947ea | 223 | infoln("ControlRes has been sent."); |
lesmin | 0:fdbd2c6947ea | 224 | |
lesmin | 0:fdbd2c6947ea | 225 | //infoln(pstReqHdr->ucControlType); |
lesmin | 0:fdbd2c6947ea | 226 | INFO("%d\r\n", pstReqHdr->ucControlType); |
lesmin | 0:fdbd2c6947ea | 227 | |
lesmin | 0:fdbd2c6947ea | 228 | if (pstReqHdr->ucControlType != USER_CONTROL_LED) { |
lesmin | 0:fdbd2c6947ea | 229 | ERR("Unknown Control Msg: %d\r\n", pstReqHdr->ucControlType); |
lesmin | 0:fdbd2c6947ea | 230 | free(pBody); |
lesmin | 0:fdbd2c6947ea | 231 | return 1; |
lesmin | 0:fdbd2c6947ea | 232 | } |
lesmin | 0:fdbd2c6947ea | 233 | |
lesmin | 0:fdbd2c6947ea | 234 | if (pstReqHdr->usMessageBody[0] == '1') { |
lesmin | 9:9179158a0fef | 235 | //myled = 1; |
lesmin | 0:fdbd2c6947ea | 236 | infoln("LED ON"); |
lesmin | 0:fdbd2c6947ea | 237 | } else if (pstReqHdr->usMessageBody[0] == '0') { |
lesmin | 9:9179158a0fef | 238 | //myled = 0; |
lesmin | 0:fdbd2c6947ea | 239 | infoln("LED OFF"); |
lesmin | 0:fdbd2c6947ea | 240 | } else { |
lesmin | 0:fdbd2c6947ea | 241 | errorln("Unknown Control Msg Body; it must be '1' or '0'."); |
lesmin | 0:fdbd2c6947ea | 242 | free(pBody); |
lesmin | 0:fdbd2c6947ea | 243 | return 1; |
lesmin | 0:fdbd2c6947ea | 244 | } |
lesmin | 0:fdbd2c6947ea | 245 | |
lesmin | 0:fdbd2c6947ea | 246 | delay(1000); //msec |
lesmin | 0:fdbd2c6947ea | 247 | |
lesmin | 0:fdbd2c6947ea | 248 | ret = GO_Notifi((char*) pstReqHdr->usGWID, (char*) pstReqHdr->usDeviceID, |
lesmin | 0:fdbd2c6947ea | 249 | (char)pstReqHdr->ucControlType, cResult, (char*) pstReqHdr->usMessageBody, 0); |
lesmin | 0:fdbd2c6947ea | 250 | |
lesmin | 0:fdbd2c6947ea | 251 | if (ret != GMMP_SUCCESS) { |
lesmin | 0:fdbd2c6947ea | 252 | ERR("NotiReq Err: %d\r\n", ret); |
lesmin | 0:fdbd2c6947ea | 253 | free(pBody); |
lesmin | 0:fdbd2c6947ea | 254 | return 1; |
lesmin | 0:fdbd2c6947ea | 255 | } |
lesmin | 0:fdbd2c6947ea | 256 | |
lesmin | 0:fdbd2c6947ea | 257 | infoln("Control NotiReq has been sent."); |
lesmin | 0:fdbd2c6947ea | 258 | } else if (cMessageType == OPERATION_NOTIFICATION_RSP) { |
lesmin | 0:fdbd2c6947ea | 259 | stNotificationRspHdr* pstRspHdr = (stNotificationRspHdr*) pBody; |
lesmin | 0:fdbd2c6947ea | 260 | |
lesmin | 0:fdbd2c6947ea | 261 | if (pstRspHdr->ucResultCode != 0x00) { |
lesmin | 0:fdbd2c6947ea | 262 | //error(F("NotiRes Err: ")); |
lesmin | 0:fdbd2c6947ea | 263 | //errorln(pstRspHdr->ucResultCode); |
lesmin | 0:fdbd2c6947ea | 264 | ERR("NotiRes Err: %d\r\n", pstRspHdr->ucResultCode); |
lesmin | 0:fdbd2c6947ea | 265 | free(pBody); |
lesmin | 0:fdbd2c6947ea | 266 | return 1; |
lesmin | 0:fdbd2c6947ea | 267 | } |
lesmin | 0:fdbd2c6947ea | 268 | |
lesmin | 0:fdbd2c6947ea | 269 | infoln("NotiRes has been received."); |
lesmin | 0:fdbd2c6947ea | 270 | } else if (cMessageType == OPERATION_GW_DEREG_RSP) { |
lesmin | 0:fdbd2c6947ea | 271 | stGwRegistrationRspHdr* pstRspHdr = (stGwRegistrationRspHdr*) pBody; |
lesmin | 0:fdbd2c6947ea | 272 | |
lesmin | 0:fdbd2c6947ea | 273 | if (pstRspHdr->ucResultCode != 0x00) { |
lesmin | 0:fdbd2c6947ea | 274 | //error(F("DeregGwRes Err: ")); |
lesmin | 0:fdbd2c6947ea | 275 | //errorln(pstRspHdr->ucResultCode); |
lesmin | 0:fdbd2c6947ea | 276 | ERR("DeregGwRes Err: %d\r\n", pstRspHdr->ucResultCode); |
lesmin | 0:fdbd2c6947ea | 277 | free(pBody); |
lesmin | 0:fdbd2c6947ea | 278 | return 1; |
lesmin | 0:fdbd2c6947ea | 279 | } |
lesmin | 0:fdbd2c6947ea | 280 | |
lesmin | 0:fdbd2c6947ea | 281 | if (strlen((char*) pstRspHdr->usGWID) <= 0) { |
lesmin | 0:fdbd2c6947ea | 282 | errorln("No GW ID!!"); |
lesmin | 0:fdbd2c6947ea | 283 | free(pBody); |
lesmin | 0:fdbd2c6947ea | 284 | return 1; |
lesmin | 0:fdbd2c6947ea | 285 | } |
lesmin | 0:fdbd2c6947ea | 286 | |
lesmin | 0:fdbd2c6947ea | 287 | if (strlen((char*) pstGMMPHeader->usAuthKey) <= 0) { |
lesmin | 0:fdbd2c6947ea | 288 | errorln("No Auth Key!!"); |
lesmin | 0:fdbd2c6947ea | 289 | free(pBody); |
lesmin | 0:fdbd2c6947ea | 290 | return 1; |
lesmin | 0:fdbd2c6947ea | 291 | } |
lesmin | 0:fdbd2c6947ea | 292 | |
lesmin | 0:fdbd2c6947ea | 293 | infoln("DeregGwRes has been received."); |
lesmin | 0:fdbd2c6947ea | 294 | } else if (cMessageType == OPERATION_DEVICE_DEREG_RSP) { |
lesmin | 0:fdbd2c6947ea | 295 | stDeviceRegistrationRspHdr* pstRspHdr = (stDeviceRegistrationRspHdr*) pBody; |
lesmin | 0:fdbd2c6947ea | 296 | |
lesmin | 0:fdbd2c6947ea | 297 | if (pstRspHdr->ucResultCode != 0x00) { |
lesmin | 0:fdbd2c6947ea | 298 | //error(F("DeregDevRes Err: ")); |
lesmin | 0:fdbd2c6947ea | 299 | //errorln(pstRspHdr->ucResultCode); |
lesmin | 0:fdbd2c6947ea | 300 | ERR("DeregDevRes Err: %d\r\n", pstRspHdr->ucResultCode); |
lesmin | 0:fdbd2c6947ea | 301 | free(pBody); |
lesmin | 0:fdbd2c6947ea | 302 | return 1; |
lesmin | 0:fdbd2c6947ea | 303 | } |
lesmin | 0:fdbd2c6947ea | 304 | |
lesmin | 0:fdbd2c6947ea | 305 | if (strlen((char*) pstRspHdr->usDeviceID) <= 0) { |
lesmin | 0:fdbd2c6947ea | 306 | errorln("No device ID!!"); |
lesmin | 0:fdbd2c6947ea | 307 | free(pBody); |
lesmin | 0:fdbd2c6947ea | 308 | return 1; |
lesmin | 0:fdbd2c6947ea | 309 | } |
lesmin | 0:fdbd2c6947ea | 310 | |
lesmin | 0:fdbd2c6947ea | 311 | infoln("DeregDevRes has been received."); |
lesmin | 0:fdbd2c6947ea | 312 | } |
lesmin | 0:fdbd2c6947ea | 313 | |
lesmin | 0:fdbd2c6947ea | 314 | free(pBody); |
lesmin | 0:fdbd2c6947ea | 315 | return 0; |
lesmin | 0:fdbd2c6947ea | 316 | } |
lesmin | 0:fdbd2c6947ea | 317 | |
lesmin | 0:fdbd2c6947ea | 318 | byte isSensing = 0; |
lesmin | 0:fdbd2c6947ea | 319 | |
lesmin | 0:fdbd2c6947ea | 320 | void startSensingTemp() |
lesmin | 0:fdbd2c6947ea | 321 | { |
lesmin | 0:fdbd2c6947ea | 322 | printf("Sensing started!\r\n"); |
lesmin | 0:fdbd2c6947ea | 323 | isSensing = 1; |
lesmin | 0:fdbd2c6947ea | 324 | } |
lesmin | 0:fdbd2c6947ea | 325 | |
irinakim | 11:f15177f282a6 | 326 | void tft_operation(void) |
irinakim | 11:f15177f282a6 | 327 | { |
irinakim | 11:f15177f282a6 | 328 | char temp1[40]; |
irinakim | 11:f15177f282a6 | 329 | char temp2[10]; |
irinakim | 11:f15177f282a6 | 330 | char buf[40]; |
irinakim | 11:f15177f282a6 | 331 | char data[30]; |
irinakim | 11:f15177f282a6 | 332 | uint8_t b; |
irinakim | 11:f15177f282a6 | 333 | uint8_t i=0; |
irinakim | 11:f15177f282a6 | 334 | int cnt = 0; |
irinakim | 11:f15177f282a6 | 335 | char ret; |
irinakim | 11:f15177f282a6 | 336 | buf[0] = 0xec; |
irinakim | 11:f15177f282a6 | 337 | buf[1] = 0xec; |
irinakim | 11:f15177f282a6 | 338 | buf[2] = 0xd6; |
irinakim | 11:f15177f282a6 | 339 | buf[3] = 0xf6; |
irinakim | 11:f15177f282a6 | 340 | buf[4] = 0x56; |
irinakim | 11:f15177f282a6 | 341 | buf[5] = 0x36; |
irinakim | 11:f15177f282a6 | 342 | buf[6] = 0xf6; |
irinakim | 11:f15177f282a6 | 343 | buf[7] = 0x36; |
irinakim | 11:f15177f282a6 | 344 | buf[8] = 0xf6; |
irinakim | 11:f15177f282a6 | 345 | buf[9] = 0xb6; |
irinakim | 11:f15177f282a6 | 346 | buf[10] = 0x16; |
irinakim | 11:f15177f282a6 | 347 | buf[11] = 0xf6; |
irinakim | 11:f15177f282a6 | 348 | buf[12] = 0x56; |
irinakim | 11:f15177f282a6 | 349 | buf[13] = 0x76; |
irinakim | 11:f15177f282a6 | 350 | |
irinakim | 11:f15177f282a6 | 351 | tft.fillScreen(ST7735_BLACK); |
irinakim | 11:f15177f282a6 | 352 | sprintf(data,"Name Date Etc\n"); |
irinakim | 11:f15177f282a6 | 353 | tft.printf("%s",data); |
irinakim | 11:f15177f282a6 | 354 | /* FILE *fp = fopen("/sd/fr_list.txt", "w"); |
irinakim | 11:f15177f282a6 | 355 | if(fp == NULL) { |
irinakim | 11:f15177f282a6 | 356 | error("Could not open file for write\n"); |
irinakim | 11:f15177f282a6 | 357 | } |
irinakim | 11:f15177f282a6 | 358 | */ |
irinakim | 11:f15177f282a6 | 359 | |
irinakim | 11:f15177f282a6 | 360 | |
irinakim | 11:f15177f282a6 | 361 | FILE *db = fopen("/sd/db.txt", "r"); |
irinakim | 11:f15177f282a6 | 362 | fscanf(db,"%s%s",&temp1, &temp2); |
irinakim | 11:f15177f282a6 | 363 | |
irinakim | 11:f15177f282a6 | 364 | printf("test\r\n"); |
irinakim | 11:f15177f282a6 | 365 | printf("d : %x, %x\r\n", temp1[0], temp1[1]); |
irinakim | 11:f15177f282a6 | 366 | printf("s : %s\r\n", temp2); |
irinakim | 11:f15177f282a6 | 367 | |
irinakim | 11:f15177f282a6 | 368 | while(1) { |
irinakim | 11:f15177f282a6 | 369 | |
irinakim | 11:f15177f282a6 | 370 | if(device.readable()) { |
irinakim | 11:f15177f282a6 | 371 | buf[cnt] = device.getc(); |
irinakim | 11:f15177f282a6 | 372 | if(buf[cnt] == 0) |
irinakim | 11:f15177f282a6 | 373 | { |
irinakim | 11:f15177f282a6 | 374 | for(int i=0; i<cnt; i++) |
irinakim | 11:f15177f282a6 | 375 | printf("%x ", buf[i]); |
irinakim | 11:f15177f282a6 | 376 | printf("\r\n"); |
irinakim | 11:f15177f282a6 | 377 | cnt = 0; |
irinakim | 11:f15177f282a6 | 378 | |
irinakim | 11:f15177f282a6 | 379 | } |
irinakim | 11:f15177f282a6 | 380 | else |
irinakim | 11:f15177f282a6 | 381 | cnt ++; |
irinakim | 11:f15177f282a6 | 382 | } |
irinakim | 11:f15177f282a6 | 383 | } |
irinakim | 11:f15177f282a6 | 384 | FILE *fp = fopen("/sd/fr_list.txt", "w"); |
irinakim | 11:f15177f282a6 | 385 | if(fp == NULL) { |
irinakim | 11:f15177f282a6 | 386 | error("Could not open file for write\n"); |
irinakim | 11:f15177f282a6 | 387 | } |
irinakim | 11:f15177f282a6 | 388 | /////////////ADD///////////// |
irinakim | 11:f15177f282a6 | 389 | |
irinakim | 11:f15177f282a6 | 390 | fp = fopen("/sd/fr_list.txt", "r"); |
irinakim | 11:f15177f282a6 | 391 | while(fgets(str,MAX_SIZE,fp)!=NULL) |
irinakim | 11:f15177f282a6 | 392 | { |
irinakim | 11:f15177f282a6 | 393 | sprintf(str_l, "%s", str); |
irinakim | 11:f15177f282a6 | 394 | tft.printf("%s",str_l); |
irinakim | 11:f15177f282a6 | 395 | } fclose(fp); |
irinakim | 11:f15177f282a6 | 396 | |
irinakim | 11:f15177f282a6 | 397 | tft.setCursor(0,0); |
irinakim | 11:f15177f282a6 | 398 | tft.getCursor(&org); |
irinakim | 11:f15177f282a6 | 399 | int8_t count=0; |
irinakim | 11:f15177f282a6 | 400 | while(1) |
irinakim | 11:f15177f282a6 | 401 | { |
irinakim | 11:f15177f282a6 | 402 | b = readButton(); |
irinakim | 11:f15177f282a6 | 403 | tft.getCursor(&locate); |
irinakim | 11:f15177f282a6 | 404 | if(b == BUTTON_DOWN) |
irinakim | 11:f15177f282a6 | 405 | { |
irinakim | 11:f15177f282a6 | 406 | tft.setCursor(120,locate.y_data-8); |
irinakim | 11:f15177f282a6 | 407 | count--; |
irinakim | 11:f15177f282a6 | 408 | if(count <=0) |
irinakim | 11:f15177f282a6 | 409 | { |
irinakim | 11:f15177f282a6 | 410 | count =0; |
irinakim | 11:f15177f282a6 | 411 | tft.printf("%s",count); |
irinakim | 11:f15177f282a6 | 412 | } |
irinakim | 11:f15177f282a6 | 413 | tft.printf("%s",count); |
irinakim | 11:f15177f282a6 | 414 | |
irinakim | 11:f15177f282a6 | 415 | } |
irinakim | 11:f15177f282a6 | 416 | else if(b == BUTTON_UP) |
irinakim | 11:f15177f282a6 | 417 | { |
irinakim | 11:f15177f282a6 | 418 | |
irinakim | 11:f15177f282a6 | 419 | tft.setCursor(120,locate.y_data-8); |
irinakim | 11:f15177f282a6 | 420 | count++; |
irinakim | 11:f15177f282a6 | 421 | if(count >=255) |
irinakim | 11:f15177f282a6 | 422 | { |
irinakim | 11:f15177f282a6 | 423 | count =0; |
irinakim | 11:f15177f282a6 | 424 | tft.printf("%s",count); |
irinakim | 11:f15177f282a6 | 425 | } |
irinakim | 11:f15177f282a6 | 426 | tft.printf("%s",count); |
irinakim | 11:f15177f282a6 | 427 | } |
irinakim | 11:f15177f282a6 | 428 | else if(b == BUTTON_SELECT) |
irinakim | 11:f15177f282a6 | 429 | { |
irinakim | 11:f15177f282a6 | 430 | tft.getCursor(&org); |
irinakim | 11:f15177f282a6 | 431 | tft.setCursor(org.x_data,org.y_data+8); |
irinakim | 11:f15177f282a6 | 432 | // printf("x =%d, y=%d\r\n",org.x_data,org.y_data); |
irinakim | 11:f15177f282a6 | 433 | |
irinakim | 11:f15177f282a6 | 434 | } |
irinakim | 11:f15177f282a6 | 435 | |
irinakim | 11:f15177f282a6 | 436 | } |
irinakim | 11:f15177f282a6 | 437 | } |
irinakim | 11:f15177f282a6 | 438 | |
lesmin | 0:fdbd2c6947ea | 439 | #define BUF_SIZE 10 |
lesmin | 0:fdbd2c6947ea | 440 | GMMPHeader header; |
lesmin | 0:fdbd2c6947ea | 441 | void *pBody = NULL; |
lesmin | 0:fdbd2c6947ea | 442 | char sendBuf[BUF_SIZE]; |
lesmin | 0:fdbd2c6947ea | 443 | |
lesmin | 0:fdbd2c6947ea | 444 | Timer g_t; //for Millis() |
lesmin | 0:fdbd2c6947ea | 445 | |
lesmin | 0:fdbd2c6947ea | 446 | int setup(void) { |
lesmin | 0:fdbd2c6947ea | 447 | |
lesmin | 0:fdbd2c6947ea | 448 | pc.baud(9600); |
lesmin | 0:fdbd2c6947ea | 449 | |
lesmin | 0:fdbd2c6947ea | 450 | g_t.start(); |
lesmin | 0:fdbd2c6947ea | 451 | |
lesmin | 0:fdbd2c6947ea | 452 | infoln("Start setup()"); |
irinakim | 11:f15177f282a6 | 453 | tft.initR(INITR_BLACKTAB); // initialize a ST7735S chip, black tab |
irinakim | 11:f15177f282a6 | 454 | tft.fillScreen(ST7735_BLACK); |
irinakim | 11:f15177f282a6 | 455 | mkdir("/sd/fridge_care", 0777); |
lesmin | 6:f3e13103ea9d | 456 | #ifdef USE_SNIC_WIFI |
lesmin | 6:f3e13103ea9d | 457 | wifi.init(); |
lesmin | 6:f3e13103ea9d | 458 | |
lesmin | 6:f3e13103ea9d | 459 | wait(0.5); |
lesmin | 6:f3e13103ea9d | 460 | int s = wifi.disconnect(); |
lesmin | 6:f3e13103ea9d | 461 | if( s != 0 ) { |
lesmin | 6:f3e13103ea9d | 462 | return -1; |
lesmin | 6:f3e13103ea9d | 463 | } |
lesmin | 6:f3e13103ea9d | 464 | |
lesmin | 6:f3e13103ea9d | 465 | wait(0.3); |
lesmin | 6:f3e13103ea9d | 466 | // Connect AP |
lesmin | 6:f3e13103ea9d | 467 | wifi.connect( MBED_AP_SSID |
lesmin | 6:f3e13103ea9d | 468 | , strlen(MBED_AP_SSID) |
lesmin | 6:f3e13103ea9d | 469 | , MBED_AP_SECURITY_TYPE |
lesmin | 6:f3e13103ea9d | 470 | , MBED_AP_SECUTIRY_KEY |
lesmin | 6:f3e13103ea9d | 471 | , strlen(MBED_AP_SECUTIRY_KEY) ); |
lesmin | 6:f3e13103ea9d | 472 | wait(0.5); |
lesmin | 6:f3e13103ea9d | 473 | wifi.setIPConfig( true ); //Use DHCP |
lesmin | 6:f3e13103ea9d | 474 | wait(0.5); |
lesmin | 6:f3e13103ea9d | 475 | |
lesmin | 6:f3e13103ea9d | 476 | tagWIFI_STATUS_T wifi_status; |
lesmin | 6:f3e13103ea9d | 477 | if( wifi.getWifiStatus(&wifi_status) ) printf("wifi_status error!\r\n"); |
lesmin | 6:f3e13103ea9d | 478 | |
lesmin | 6:f3e13103ea9d | 479 | printf("MAC Address is %02x:%02x:%02x:%02x:%02x:%02x\r\n", |
lesmin | 6:f3e13103ea9d | 480 | wifi_status.mac_address[0], wifi_status.mac_address[1], wifi_status.mac_address[2], |
lesmin | 6:f3e13103ea9d | 481 | wifi_status.mac_address[3], wifi_status.mac_address[4], wifi_status.mac_address[5]); |
lesmin | 6:f3e13103ea9d | 482 | printf("IP Address is %s\r\n", wifi.getIPAddress()); |
lesmin | 6:f3e13103ea9d | 483 | #endif//USE_SNIC_WIFI |
lesmin | 6:f3e13103ea9d | 484 | |
lesmin | 6:f3e13103ea9d | 485 | #ifdef USE_WIZNET_W5500 |
lesmin | 6:f3e13103ea9d | 486 | //mbed_mac_address((char *)MAC_Addr); //Use mbed mac addres |
lesmin | 6:f3e13103ea9d | 487 | printf("input MAC Address is %02x:%02x:%02x:%02x:%02x:%02x\r\n", |
lesmin | 6:f3e13103ea9d | 488 | g_mac[0], g_mac[1], g_mac[2], g_mac[3], g_mac[4], g_mac[5]); |
lesmin | 6:f3e13103ea9d | 489 | |
lesmin | 7:6534e4a59e63 | 490 | int ret = ethernet.init(g_mac); |
lesmin | 6:f3e13103ea9d | 491 | //printf("SPI Initialized \r\n"); |
lesmin | 6:f3e13103ea9d | 492 | //wait(1); // 1 second for stable state |
lesmin | 6:f3e13103ea9d | 493 | |
lesmin | 6:f3e13103ea9d | 494 | printf("W5500 Networking Started \r\n"); |
lesmin | 6:f3e13103ea9d | 495 | //wait(1); // 1 second for stable state |
lesmin | 6:f3e13103ea9d | 496 | |
lesmin | 7:6534e4a59e63 | 497 | if (!ret) { |
lesmin | 6:f3e13103ea9d | 498 | printf("Initialized, MAC: %s\r\n", ethernet.getMACAddress()); |
lesmin | 7:6534e4a59e63 | 499 | ret = ethernet.connect(); |
lesmin | 7:6534e4a59e63 | 500 | if (!ret) { |
lesmin | 6:f3e13103ea9d | 501 | printf("IP: %s, MASK: %s, GW: %s\r\n", |
lesmin | 6:f3e13103ea9d | 502 | ethernet.getIPAddress(), ethernet.getNetworkMask(), ethernet.getGateway()); |
lesmin | 6:f3e13103ea9d | 503 | } else { |
lesmin | 7:6534e4a59e63 | 504 | printf("Error ethernet.connect() - ret = %d\r\n", ret); |
lesmin | 6:f3e13103ea9d | 505 | //exit(0); |
lesmin | 7:6534e4a59e63 | 506 | |
lesmin | 7:6534e4a59e63 | 507 | // ## 20150812 Eric added, Ethernet interface re-initialize code |
lesmin | 7:6534e4a59e63 | 508 | /////////////////////////////////////////////////////////////////////////// |
lesmin | 7:6534e4a59e63 | 509 | do{ |
lesmin | 7:6534e4a59e63 | 510 | //printf("Ethernet Interface Re-initialize\r\n"); |
lesmin | 7:6534e4a59e63 | 511 | #if defined(TARGET_LPC1768) |
lesmin | 7:6534e4a59e63 | 512 | SPI spi(p5, p6, p7); // mosi, miso, sclk |
lesmin | 7:6534e4a59e63 | 513 | #elif defined(TARGET_NUCLEO_F411RE) || defined(TARGET_NUCLEO_F401RE) || defined(TARGET_NUCLEO_F303RE) || defined(TARGET_NUCLEO_F334R8) || defined(TARGET_NUCLEO_L152RE) |
lesmin | 7:6534e4a59e63 | 514 | SPI spi(PA_7, PA_6, PA_5); |
lesmin | 7:6534e4a59e63 | 515 | #endif |
lesmin | 7:6534e4a59e63 | 516 | //wait(0.5); |
lesmin | 7:6534e4a59e63 | 517 | |
lesmin | 7:6534e4a59e63 | 518 | ethernet.init(g_mac); |
lesmin | 7:6534e4a59e63 | 519 | ret = ethernet.connect(); |
lesmin | 7:6534e4a59e63 | 520 | printf("Re-initialized, MAC: %s\r\n", ethernet.getMACAddress()); |
lesmin | 7:6534e4a59e63 | 521 | printf("IP: %s, MASK: %s, GW: %s\r\n", |
lesmin | 7:6534e4a59e63 | 522 | ethernet.getIPAddress(), ethernet.getNetworkMask(), ethernet.getGateway()); |
lesmin | 7:6534e4a59e63 | 523 | } while(ret); |
lesmin | 7:6534e4a59e63 | 524 | /////////////////////////////////////////////////////////////////////////// |
lesmin | 6:f3e13103ea9d | 525 | } |
lesmin | 6:f3e13103ea9d | 526 | } else { |
lesmin | 7:6534e4a59e63 | 527 | printf("Error ethernet.init() - ret = %d\r\n", ret); |
lesmin | 6:f3e13103ea9d | 528 | //exit(0); |
lesmin | 6:f3e13103ea9d | 529 | } |
lesmin | 6:f3e13103ea9d | 530 | |
lesmin | 6:f3e13103ea9d | 531 | #endif//USE_WIZNET_W5500 |
lesmin | 6:f3e13103ea9d | 532 | |
lesmin | 6:f3e13103ea9d | 533 | |
lesmin | 0:fdbd2c6947ea | 534 | startSensingTemp(); //lesmin |
lesmin | 0:fdbd2c6947ea | 535 | |
lesmin | 0:fdbd2c6947ea | 536 | if ( Initialize(serverIp, nServerPort, pszDomainCode, pszGWAuthID, g_mac) ) { |
lesmin | 0:fdbd2c6947ea | 537 | infoln("Initialize failed!"); |
lesmin | 0:fdbd2c6947ea | 538 | return -1; //lesmin |
lesmin | 0:fdbd2c6947ea | 539 | } |
lesmin | 0:fdbd2c6947ea | 540 | |
lesmin | 0:fdbd2c6947ea | 541 | infoln("SetCallFunction"); |
lesmin | 0:fdbd2c6947ea | 542 | SetCallFunction(Recv); |
lesmin | 0:fdbd2c6947ea | 543 | |
lesmin | 7:6534e4a59e63 | 544 | ret = GO_Reg(NULL, pszGWMFID); |
lesmin | 0:fdbd2c6947ea | 545 | |
lesmin | 0:fdbd2c6947ea | 546 | if (ret != GMMP_SUCCESS) { |
lesmin | 0:fdbd2c6947ea | 547 | errorln("RegReq Error!!"); |
lesmin | 0:fdbd2c6947ea | 548 | for(;;); |
lesmin | 0:fdbd2c6947ea | 549 | } |
lesmin | 0:fdbd2c6947ea | 550 | |
lesmin | 0:fdbd2c6947ea | 551 | infoln("GW RegReq has been sent."); |
lesmin | 0:fdbd2c6947ea | 552 | return 0; |
lesmin | 0:fdbd2c6947ea | 553 | } |
lesmin | 0:fdbd2c6947ea | 554 | |
lesmin | 0:fdbd2c6947ea | 555 | int millis(void) { |
lesmin | 0:fdbd2c6947ea | 556 | return g_t.read_ms(); |
lesmin | 0:fdbd2c6947ea | 557 | } |
lesmin | 0:fdbd2c6947ea | 558 | |
lesmin | 0:fdbd2c6947ea | 559 | float getTemperature(void) { |
lesmin | 0:fdbd2c6947ea | 560 | return 33.3; |
lesmin | 0:fdbd2c6947ea | 561 | } |
lesmin | 0:fdbd2c6947ea | 562 | |
lesmin | 0:fdbd2c6947ea | 563 | void delay(int d) { |
lesmin | 0:fdbd2c6947ea | 564 | float delay_time = d/1000.0; |
lesmin | 0:fdbd2c6947ea | 565 | wait(delay_time); |
lesmin | 0:fdbd2c6947ea | 566 | } |
lesmin | 0:fdbd2c6947ea | 567 | |
irinakim | 11:f15177f282a6 | 568 | uint8_t readButton(void) { |
irinakim | 11:f15177f282a6 | 569 | float a = joystick.read(); |
irinakim | 11:f15177f282a6 | 570 | |
irinakim | 11:f15177f282a6 | 571 | a *= 5.0; |
irinakim | 11:f15177f282a6 | 572 | |
irinakim | 11:f15177f282a6 | 573 | // printf("Button read analog = %f\r\n",a); |
irinakim | 11:f15177f282a6 | 574 | if (a < 0.2) return BUTTON_DOWN;//BUTTON_LEFT; |
irinakim | 11:f15177f282a6 | 575 | if (a < 1.0) return BUTTON_RIGHT;//BUTTON_DOWN; |
irinakim | 11:f15177f282a6 | 576 | if (a < 1.7) return BUTTON_SELECT; |
irinakim | 11:f15177f282a6 | 577 | if (a < 2.6) return BUTTON_UP;//BUTTON_RIGHT; |
irinakim | 11:f15177f282a6 | 578 | if (a < 4.6) return BUTTON_LEFT;//BUTTON_UP; |
irinakim | 11:f15177f282a6 | 579 | |
irinakim | 11:f15177f282a6 | 580 | else return BUTTON_NONE; |
irinakim | 11:f15177f282a6 | 581 | } |
irinakim | 11:f15177f282a6 | 582 | |
lesmin | 0:fdbd2c6947ea | 583 | void loop(void) |
lesmin | 0:fdbd2c6947ea | 584 | { |
lesmin | 0:fdbd2c6947ea | 585 | int ret = GetReadData(&header, &pBody); |
lesmin | 0:fdbd2c6947ea | 586 | if (ret != E_WOULDBLOCK) { |
lesmin | 0:fdbd2c6947ea | 587 | //infoln("******** NOT E_WOULDBLOCK *********"); |
lesmin | 0:fdbd2c6947ea | 588 | //info(F("Free memory size: ")); |
lesmin | 0:fdbd2c6947ea | 589 | //infoln(freeRam()); |
lesmin | 0:fdbd2c6947ea | 590 | } |
lesmin | 0:fdbd2c6947ea | 591 | |
lesmin | 0:fdbd2c6947ea | 592 | //byte addr[8]; |
lesmin | 0:fdbd2c6947ea | 593 | float temperature; |
lesmin | 0:fdbd2c6947ea | 594 | |
lesmin | 0:fdbd2c6947ea | 595 | int curMilli = millis(); |
lesmin | 0:fdbd2c6947ea | 596 | byte mustDeliver = (curMilli - lastDeliverMilli) > reportPeriodMilli; |
lesmin | 0:fdbd2c6947ea | 597 | byte mustHeartbeat = (curMilli - lastHeartbeatMilli) > heartbeatPeriodMilli; |
lesmin | 0:fdbd2c6947ea | 598 | |
lesmin | 0:fdbd2c6947ea | 599 | if (!isSensing) { |
lesmin | 0:fdbd2c6947ea | 600 | printf("Sensor is off...\r\n"); |
lesmin | 0:fdbd2c6947ea | 601 | return; |
lesmin | 0:fdbd2c6947ea | 602 | } |
lesmin | 0:fdbd2c6947ea | 603 | |
lesmin | 0:fdbd2c6947ea | 604 | #if 1 |
lesmin | 0:fdbd2c6947ea | 605 | //int mustGwDereg = digitalRead(DEREGISTRATION_GW_SWITCH_PIN); |
lesmin | 0:fdbd2c6947ea | 606 | int mustGwDereg = LOW; //lesmin |
lesmin | 0:fdbd2c6947ea | 607 | |
lesmin | 0:fdbd2c6947ea | 608 | if (mustGwDereg == HIGH && regGwCount > 0) { |
lesmin | 0:fdbd2c6947ea | 609 | ret = GO_DeReg(GetGWID(), NULL); |
lesmin | 0:fdbd2c6947ea | 610 | |
lesmin | 0:fdbd2c6947ea | 611 | if (ret != GMMP_SUCCESS) { |
lesmin | 0:fdbd2c6947ea | 612 | errorln("DeregGwReq Error!!"); |
lesmin | 0:fdbd2c6947ea | 613 | delay(1000); |
lesmin | 0:fdbd2c6947ea | 614 | return; |
lesmin | 0:fdbd2c6947ea | 615 | } |
lesmin | 0:fdbd2c6947ea | 616 | |
lesmin | 0:fdbd2c6947ea | 617 | regGwCount--; |
lesmin | 0:fdbd2c6947ea | 618 | return; |
lesmin | 0:fdbd2c6947ea | 619 | } |
lesmin | 0:fdbd2c6947ea | 620 | |
lesmin | 0:fdbd2c6947ea | 621 | //int mustDevDereg = digitalRead(DEREGISTRATION_DEVICE_SWITCH_PIN); |
lesmin | 0:fdbd2c6947ea | 622 | int mustDevDereg = LOW; |
lesmin | 0:fdbd2c6947ea | 623 | |
lesmin | 0:fdbd2c6947ea | 624 | if (mustDevDereg == HIGH && regDevCount > 0) { |
lesmin | 0:fdbd2c6947ea | 625 | ret = GO_DeReg(GetGWID(), (char*) deviceId); |
lesmin | 0:fdbd2c6947ea | 626 | |
lesmin | 0:fdbd2c6947ea | 627 | if (ret != GMMP_SUCCESS) { |
lesmin | 0:fdbd2c6947ea | 628 | errorln("DeregDevReq Error!!"); |
lesmin | 0:fdbd2c6947ea | 629 | delay(1000); |
lesmin | 0:fdbd2c6947ea | 630 | return; |
lesmin | 0:fdbd2c6947ea | 631 | } |
lesmin | 0:fdbd2c6947ea | 632 | |
lesmin | 0:fdbd2c6947ea | 633 | regDevCount--; |
lesmin | 0:fdbd2c6947ea | 634 | return; |
lesmin | 0:fdbd2c6947ea | 635 | } |
lesmin | 0:fdbd2c6947ea | 636 | |
lesmin | 0:fdbd2c6947ea | 637 | if (mustHeartbeat) { |
lesmin | 0:fdbd2c6947ea | 638 | DBG("lastHeartbeatMilli: %d\r\ncurMilli: %d\r\n", lastHeartbeatMilli, curMilli); |
lesmin | 0:fdbd2c6947ea | 639 | |
lesmin | 0:fdbd2c6947ea | 640 | ret = GO_HB(GetGWID()); |
lesmin | 0:fdbd2c6947ea | 641 | |
lesmin | 0:fdbd2c6947ea | 642 | if (ret != GMMP_SUCCESS) { |
lesmin | 0:fdbd2c6947ea | 643 | errorln("HeartbeatReq Error!!"); |
lesmin | 0:fdbd2c6947ea | 644 | return; |
lesmin | 0:fdbd2c6947ea | 645 | } |
lesmin | 0:fdbd2c6947ea | 646 | |
lesmin | 0:fdbd2c6947ea | 647 | infoln("HeartbeatReq has been sent."); |
lesmin | 0:fdbd2c6947ea | 648 | |
lesmin | 0:fdbd2c6947ea | 649 | lastHeartbeatMilli = curMilli; |
lesmin | 0:fdbd2c6947ea | 650 | } |
lesmin | 0:fdbd2c6947ea | 651 | |
lesmin | 0:fdbd2c6947ea | 652 | if (!mustDeliver) { |
lesmin | 0:fdbd2c6947ea | 653 | return; |
lesmin | 0:fdbd2c6947ea | 654 | } |
lesmin | 0:fdbd2c6947ea | 655 | #endif |
lesmin | 0:fdbd2c6947ea | 656 | |
lesmin | 0:fdbd2c6947ea | 657 | temperature = getTemperature(); |
lesmin | 0:fdbd2c6947ea | 658 | |
lesmin | 0:fdbd2c6947ea | 659 | memset(sendBuf, 0, BUF_SIZE); |
lesmin | 0:fdbd2c6947ea | 660 | |
lesmin | 0:fdbd2c6947ea | 661 | sprintf(sendBuf, "%.1f", temperature); |
lesmin | 0:fdbd2c6947ea | 662 | |
lesmin | 0:fdbd2c6947ea | 663 | ret = GO_Delivery(GetGWID(), NULL, DELIVERY_COLLECT_DATA, 0x01, sendBuf); |
lesmin | 0:fdbd2c6947ea | 664 | |
lesmin | 0:fdbd2c6947ea | 665 | info("Sent Data: "); |
lesmin | 0:fdbd2c6947ea | 666 | infoln(sendBuf); |
lesmin | 0:fdbd2c6947ea | 667 | INFO("Sent Data: %s\r\n", sendBuf); |
lesmin | 0:fdbd2c6947ea | 668 | |
lesmin | 0:fdbd2c6947ea | 669 | if (ret != GMMP_SUCCESS) { |
lesmin | 0:fdbd2c6947ea | 670 | errorln("DeliveryReq Error!!"); |
lesmin | 0:fdbd2c6947ea | 671 | return; |
lesmin | 0:fdbd2c6947ea | 672 | } |
lesmin | 0:fdbd2c6947ea | 673 | |
lesmin | 0:fdbd2c6947ea | 674 | lastDeliverMilli = curMilli; |
lesmin | 0:fdbd2c6947ea | 675 | } |
lesmin | 0:fdbd2c6947ea | 676 | |
lesmin | 0:fdbd2c6947ea | 677 | int main() { |
lesmin | 0:fdbd2c6947ea | 678 | |
irinakim | 11:f15177f282a6 | 679 | time_t ctTime; |
irinakim | 11:f15177f282a6 | 680 | char buffer[50]; |
irinakim | 11:f15177f282a6 | 681 | char data[30]; |
irinakim | 11:f15177f282a6 | 682 | uint8_t b; |
irinakim | 11:f15177f282a6 | 683 | uint8_t i=0; |
lesmin | 0:fdbd2c6947ea | 684 | if( setup() < 0 ) return 0; |
lesmin | 0:fdbd2c6947ea | 685 | |
lesmin | 0:fdbd2c6947ea | 686 | while(1) { |
irinakim | 11:f15177f282a6 | 687 | ctTime = time(NULL)+(3600*9); //TIME with offset for eastern time KR |
irinakim | 11:f15177f282a6 | 688 | //FORMAT TIME FOR DISPLAY AND STORE FORMATTED RESULT IN BUFFER |
irinakim | 11:f15177f282a6 | 689 | strftime(buffer,80,"%a %b %d\r\n%T %p %z\r\n %Z\r\n",localtime(&ctTime)); |
irinakim | 11:f15177f282a6 | 690 | |
lesmin | 0:fdbd2c6947ea | 691 | loop(); |
irinakim | 11:f15177f282a6 | 692 | tft_operation(); |
irinakim | 11:f15177f282a6 | 693 | |
lesmin | 0:fdbd2c6947ea | 694 | } |
lesmin | 0:fdbd2c6947ea | 695 | } |