mbed 5.4 with sleep mode

Dependencies:   C027_Support mbed-dev

Fork of C027_SupportTest_coap by Umar Naeem

Committer:
ranaumarnaeem
Date:
Thu May 25 11:53:45 2017 +0000
Revision:
39:4f3f7463e55f
Parent:
37:43d48521d4d7
mbed 5.4 with sleep mode

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lawliet 0:4e3cb26f6019 1 #include "mbed.h"
ranaumarnaeem 34:d6ce8f961b8b 2 #include <stdlib.h>
ranaumarnaeem 34:d6ce8f961b8b 3 #include <stdio.h>
ranaumarnaeem 34:d6ce8f961b8b 4 #include <string.h>
ranaumarnaeem 34:d6ce8f961b8b 5 #include <errno.h>
ranaumarnaeem 34:d6ce8f961b8b 6 #include <stdint.h>
mazgch 19:f022ff746eb8 7 #include "GPS.h"
mazgch 19:f022ff746eb8 8 #include "MDM.h"
ranaumarnaeem 34:d6ce8f961b8b 9 #include "main.h"
ranaumarnaeem 39:4f3f7463e55f 10 #include "coap_msg.h"
ranaumarnaeem 39:4f3f7463e55f 11 #include "coap_client.h"
ranaumarnaeem 39:4f3f7463e55f 12
ranaumarnaeem 34:d6ce8f961b8b 13 extern "C" {
ranaumarnaeem 39:4f3f7463e55f 14
ranaumarnaeem 37:43d48521d4d7 15 #include "rtc_api.h"
ranaumarnaeem 37:43d48521d4d7 16 }
ranaumarnaeem 37:43d48521d4d7 17 //
ranaumarnaeem 37:43d48521d4d7 18 //----------------------------------------------------------------------------------------------------------------------
ranaumarnaeem 37:43d48521d4d7 19 #define SIMPIN "1922"
ranaumarnaeem 37:43d48521d4d7 20 #define APN NULL
ranaumarnaeem 37:43d48521d4d7 21 #define USERNAME NULL
ranaumarnaeem 37:43d48521d4d7 22 #define PASSWORD NULL
ranaumarnaeem 37:43d48521d4d7 23 //----------------------------------------------------------------------------------------------------------------------
ranaumarnaeem 37:43d48521d4d7 24 int pport = 5685;
ranaumarnaeem 37:43d48521d4d7 25 const char* host = "coap.me";
ranaumarnaeem 37:43d48521d4d7 26 //----------------------------------------------------------------------------------------------------------------------
ranaumarnaeem 37:43d48521d4d7 27 int ssocket;
ranaumarnaeem 37:43d48521d4d7 28 MDMParser::IP ipp;
ranaumarnaeem 37:43d48521d4d7 29 MDMSerial* gmdm = NULL;
ranaumarnaeem 37:43d48521d4d7 30 DigitalOut myled(LED);
ranaumarnaeem 37:43d48521d4d7 31 unsigned long ulGPSRxCntr=0, ulGPSTxCntr=0 ; //-- Asset
ranaumarnaeem 37:43d48521d4d7 32 unsigned long ulGSMRxCntr=0, ulGSMTxCntr=0 ; //-- Asset
ranaumarnaeem 37:43d48521d4d7 33 unsigned long ulTotalRxCntr=0,ulTotalTxCntr=0; //-- Asset
ranaumarnaeem 37:43d48521d4d7 34 char caLssFinalAssetMsg[150];
ranaumarnaeem 39:4f3f7463e55f 35 double dLatitude=31.47691,dLongitude=74.34259;
ranaumarnaeem 37:43d48521d4d7 36 static unsigned int uiWakeupCounter=0,uiWatchdogCounter=0;
ranaumarnaeem 37:43d48521d4d7 37 unsigned char ucBtteryLevel=0;
ranaumarnaeem 37:43d48521d4d7 38 MDMParser::DevStatus devStatus={};
ranaumarnaeem 37:43d48521d4d7 39
ranaumarnaeem 37:43d48521d4d7 40 bool bSendingDataFlag = true;
ranaumarnaeem 37:43d48521d4d7 41 bool bSleepModeFlag = true;
ranaumarnaeem 37:43d48521d4d7 42 //bool bHeartBeatFlag = false;
ranaumarnaeem 37:43d48521d4d7 43 //bool bAlarmIntervalFlag = true;
ranaumarnaeem 37:43d48521d4d7 44
ranaumarnaeem 37:43d48521d4d7 45 //unsigned int uiAlarmIntervalCounter = 0;
ranaumarnaeem 37:43d48521d4d7 46 //unsigned int uiHeartBeatCounter = 0;
ranaumarnaeem 39:4f3f7463e55f 47
ranaumarnaeem 39:4f3f7463e55f 48 char ucReturnCode[10]; //Return code array
ranaumarnaeem 39:4f3f7463e55f 49 int alarmtime = 1495698480;//2017-3-29-11:56:7
ranaumarnaeem 37:43d48521d4d7 50 //----------------------------------------------------------------------------------------------------------------------
ranaumarnaeem 37:43d48521d4d7 51 //----------------------------------------------------------------------------------------------------------------------
ranaumarnaeem 37:43d48521d4d7 52 /*
ranaumarnaeem 37:43d48521d4d7 53 void timer0_init(int sec)
ranaumarnaeem 37:43d48521d4d7 54 {
ranaumarnaeem 37:43d48521d4d7 55 LPC_SC->PCONP |=1<1; //timer0 power on
ranaumarnaeem 37:43d48521d4d7 56 LPC_TIM0->MR0 = sec * 23980000; //1sec * sec
ranaumarnaeem 39:4f3f7463e55f 57 LPC_TIM0->MCR = 1; //interrupt and reset control
ranaumarnaeem 37:43d48521d4d7 58 //3 = Interrupt & reset timer0 on match
ranaumarnaeem 37:43d48521d4d7 59 //1 = Interrupt only, no reset of timer0
ranaumarnaeem 37:43d48521d4d7 60 NVIC_EnableIRQ(TIMER0_IRQn); //enable timer0 interrupt
ranaumarnaeem 37:43d48521d4d7 61 LPC_TIM0->TCR = 1; //enable Timer0
ranaumarnaeem 37:43d48521d4d7 62 //printf("Done timer_init\n\r");
ranaumarnaeem 37:43d48521d4d7 63 }
ranaumarnaeem 37:43d48521d4d7 64
ranaumarnaeem 37:43d48521d4d7 65 extern "C" void TIMER0_IRQHandler (void)
ranaumarnaeem 37:43d48521d4d7 66 {
ranaumarnaeem 37:43d48521d4d7 67 if((LPC_TIM0->IR & 0x01) == 0x01) // if MR0 interrupt, proceed
ranaumarnaeem 37:43d48521d4d7 68 {
ranaumarnaeem 37:43d48521d4d7 69 LPC_TIM0->IR |= 1 << 0; // Clear MR0 interrupt flag
ranaumarnaeem 39:4f3f7463e55f 70 printf("Timer 0 interrupt generated 10 sec\r\n");
ranaumarnaeem 39:4f3f7463e55f 71 LPC_TIM0->TCR = 0;
ranaumarnaeem 37:43d48521d4d7 72 }
ranaumarnaeem 37:43d48521d4d7 73 }
ranaumarnaeem 37:43d48521d4d7 74 */
ranaumarnaeem 37:43d48521d4d7 75 //----------------------------------------------------------------------------------------------------------------------
ranaumarnaeem 37:43d48521d4d7 76 //----------------------------------------------------------------------------------------------------------------------
ranaumarnaeem 37:43d48521d4d7 77
ranaumarnaeem 39:4f3f7463e55f 78 void rtc_setup(time_t t, unsigned int sec)
ranaumarnaeem 37:43d48521d4d7 79 {
ranaumarnaeem 39:4f3f7463e55f 80 struct tm *timeinfo = localtime(&t);
ranaumarnaeem 39:4f3f7463e55f 81 unsigned int min;
ranaumarnaeem 39:4f3f7463e55f 82
ranaumarnaeem 37:43d48521d4d7 83 rtc_init();
ranaumarnaeem 37:43d48521d4d7 84
ranaumarnaeem 39:4f3f7463e55f 85 rtc_write(alarmtime);//2017-3-29-11:56:7
ranaumarnaeem 39:4f3f7463e55f 86
ranaumarnaeem 39:4f3f7463e55f 87 //min = sec/60;
ranaumarnaeem 39:4f3f7463e55f 88 //sec = sec%60;
ranaumarnaeem 39:4f3f7463e55f 89 //set alarm time
ranaumarnaeem 39:4f3f7463e55f 90 LPC_RTC->ALSEC = timeinfo->tm_sec+sec;//10 sec
ranaumarnaeem 39:4f3f7463e55f 91 //LPC_RTC->ALMIN = timeinfo->tm_min+min;//10 sec
ranaumarnaeem 39:4f3f7463e55f 92
ranaumarnaeem 39:4f3f7463e55f 93 LPC_RTC->AMR &= (~(1 << 0)) & 0xFF;
ranaumarnaeem 39:4f3f7463e55f 94
ranaumarnaeem 39:4f3f7463e55f 95 LPC_RTC->ILR = (1 << 0) | (1 << 1);
ranaumarnaeem 39:4f3f7463e55f 96
ranaumarnaeem 39:4f3f7463e55f 97 printf("RTC Alarm Time Set\r\n");
ranaumarnaeem 37:43d48521d4d7 98
ranaumarnaeem 37:43d48521d4d7 99 NVIC_EnableIRQ(RTC_IRQn);
ranaumarnaeem 37:43d48521d4d7 100
ranaumarnaeem 37:43d48521d4d7 101 do
ranaumarnaeem 37:43d48521d4d7 102 {
ranaumarnaeem 37:43d48521d4d7 103 LPC_RTC->CCR |= (1 << 0);
ranaumarnaeem 37:43d48521d4d7 104 }
ranaumarnaeem 37:43d48521d4d7 105 while ((LPC_RTC->CCR & (1 << 0)) == 0);
ranaumarnaeem 37:43d48521d4d7 106
ranaumarnaeem 37:43d48521d4d7 107 printf("RTC setup successfully\r\n");
ranaumarnaeem 37:43d48521d4d7 108 }
ranaumarnaeem 37:43d48521d4d7 109
ranaumarnaeem 37:43d48521d4d7 110 extern "C" void RTC_IRQHandler (void)
ranaumarnaeem 37:43d48521d4d7 111 {
ranaumarnaeem 37:43d48521d4d7 112 // Check for alarm match
ranaumarnaeem 37:43d48521d4d7 113 if (LPC_RTC->ILR & (1 << 1))
ranaumarnaeem 37:43d48521d4d7 114 {
ranaumarnaeem 37:43d48521d4d7 115 LPC_RTC->ILR = (1 << 1);
ranaumarnaeem 37:43d48521d4d7 116 printf("RTC interrupt generated 10 sec\r\n");
ranaumarnaeem 37:43d48521d4d7 117 }
ranaumarnaeem 34:d6ce8f961b8b 118 }
ranaumarnaeem 34:d6ce8f961b8b 119
ranaumarnaeem 34:d6ce8f961b8b 120 //----------------------------------------------------------------------------------------------------------------------
ranaumarnaeem 34:d6ce8f961b8b 121 //----------------------------------------------------------------------------------------------------------------------
ranaumarnaeem 37:43d48521d4d7 122
lawliet 0:4e3cb26f6019 123 int main(void)
ranaumarnaeem 37:43d48521d4d7 124 {
ranaumarnaeem 37:43d48521d4d7 125 int ret;
ranaumarnaeem 37:43d48521d4d7 126 char buf[150] = "";
ranaumarnaeem 37:43d48521d4d7 127
ranaumarnaeem 37:43d48521d4d7 128 // Create the GPS object
ranaumarnaeem 37:43d48521d4d7 129 #if 1 // use GPSI2C class
ranaumarnaeem 37:43d48521d4d7 130 GPSI2C gps;
ranaumarnaeem 37:43d48521d4d7 131 #else // or GPSSerial class
ranaumarnaeem 37:43d48521d4d7 132 GPSSerial gps;
ranaumarnaeem 37:43d48521d4d7 133 #endif
ranaumarnaeem 37:43d48521d4d7 134
ranaumarnaeem 34:d6ce8f961b8b 135 MDMSerial mdm;
ranaumarnaeem 37:43d48521d4d7 136 gmdm = &mdm;
ranaumarnaeem 37:43d48521d4d7 137 us_ticker_init();
ranaumarnaeem 39:4f3f7463e55f 138
lawliet 0:4e3cb26f6019 139
ranaumarnaeem 37:43d48521d4d7 140 while(1)
ranaumarnaeem 37:43d48521d4d7 141 {
ranaumarnaeem 37:43d48521d4d7 142 wait(5);
ranaumarnaeem 37:43d48521d4d7 143 //if(bAlarmIntervalFlag || bHeartBeatFlag)
ranaumarnaeem 37:43d48521d4d7 144 //{
ranaumarnaeem 37:43d48521d4d7 145 if(initialize_modem())
ranaumarnaeem 34:d6ce8f961b8b 146 {
ranaumarnaeem 37:43d48521d4d7 147 if(bSendingDataFlag)//&& bAlarmIntervalFlag)
ranaumarnaeem 37:43d48521d4d7 148 {
ranaumarnaeem 37:43d48521d4d7 149 //bAlarmIntervalFlag = false;
ranaumarnaeem 39:4f3f7463e55f 150 while( (ret = gps.getMessage(buf, sizeof(buf))) > 0)
ranaumarnaeem 37:43d48521d4d7 151 {
ranaumarnaeem 37:43d48521d4d7 152 int len = LENGTH(ret);
ranaumarnaeem 37:43d48521d4d7 153 ulGPSRxCntr = len;
ranaumarnaeem 37:43d48521d4d7 154 if( (PROTOCOL(ret)==GPSParser::NMEA) && (len > 6) )
ranaumarnaeem 37:43d48521d4d7 155 {
ranaumarnaeem 37:43d48521d4d7 156 // talker is $GA=Galileo $GB=Beidou $GL=Glonass $GN=Combined $GP=GPS
ranaumarnaeem 37:43d48521d4d7 157 if( (buf[0]=='$') || buf[1]=='G' )
ranaumarnaeem 37:43d48521d4d7 158 {
ranaumarnaeem 37:43d48521d4d7 159 #define _CHECK_TALKER(s) ((buf[3] == s[0]) && (buf[4] == s[1]) && (buf[5] == s[2]))
ranaumarnaeem 37:43d48521d4d7 160 if( _CHECK_TALKER("GLL") )
ranaumarnaeem 37:43d48521d4d7 161 {
ranaumarnaeem 37:43d48521d4d7 162 char ch;
ranaumarnaeem 37:43d48521d4d7 163 if( gps.getNmeaAngle(1,buf,len,dLatitude) && gps.getNmeaAngle(3,buf,len,dLongitude) && gps.getNmeaItem(6,buf,len,ch) && ch == 'A' )
ranaumarnaeem 37:43d48521d4d7 164 {
ranaumarnaeem 37:43d48521d4d7 165 printf( "GPS Location: %.5f %.5f\r\n", dLatitude, dLongitude );
ranaumarnaeem 37:43d48521d4d7 166 break;
ranaumarnaeem 37:43d48521d4d7 167 //sprintf(link, "I am here!\n" "https://maps.google.com/?q=%.5f,%.5f", la, lo);
ranaumarnaeem 37:43d48521d4d7 168 } else
ranaumarnaeem 37:43d48521d4d7 169 {
ranaumarnaeem 37:43d48521d4d7 170 dLatitude = 0.0;
ranaumarnaeem 37:43d48521d4d7 171 dLongitude = 0.0;
ranaumarnaeem 37:43d48521d4d7 172 }
ranaumarnaeem 37:43d48521d4d7 173 }
ranaumarnaeem 37:43d48521d4d7 174 //else if(_CHECK_TALKER("GGA") || _CHECK_TALKER("GNS") )
ranaumarnaeem 37:43d48521d4d7 175 //{
ranaumarnaeem 37:43d48521d4d7 176 //double a = 0;
ranaumarnaeem 37:43d48521d4d7 177 //if (gps.getNmeaItem(9,buf,len,a)) // altitude msl [m]
ranaumarnaeem 37:43d48521d4d7 178 // printf("GPS Altitude: %.1f\r\n", a);
ranaumarnaeem 37:43d48521d4d7 179 //}
ranaumarnaeem 37:43d48521d4d7 180 //else if( _CHECK_TALKER("VTG") )
ranaumarnaeem 37:43d48521d4d7 181 //{
ranaumarnaeem 37:43d48521d4d7 182 //double s = 0;
ranaumarnaeem 37:43d48521d4d7 183 //if( gps.getNmeaItem(7,buf,len,s) ) // speed [km/h]
ranaumarnaeem 37:43d48521d4d7 184 // printf( "GPS Speed: %.1f\r\n", s );
ranaumarnaeem 37:43d48521d4d7 185 //}
ranaumarnaeem 37:43d48521d4d7 186 }
ranaumarnaeem 37:43d48521d4d7 187 }
ranaumarnaeem 37:43d48521d4d7 188 else
ranaumarnaeem 37:43d48521d4d7 189 {
ranaumarnaeem 37:43d48521d4d7 190 printf("GPS Packet error\r\n");
ranaumarnaeem 37:43d48521d4d7 191 dLatitude = 0.0;
ranaumarnaeem 37:43d48521d4d7 192 dLongitude = 0.0;
ranaumarnaeem 37:43d48521d4d7 193 }
ranaumarnaeem 37:43d48521d4d7 194 }
ranaumarnaeem 37:43d48521d4d7 195 memset(caLssFinalAssetMsg, '\0', sizeof(caLssFinalAssetMsg));
ranaumarnaeem 37:43d48521d4d7 196 sprintf( caLssFinalAssetMsg, "$AQLSS,01,%s,%s,%.5f,%.5f,%lu,%lu,%d,%d,%d*xx",
ranaumarnaeem 37:43d48521d4d7 197 devStatus.imei,devStatus.imsi, dLatitude,dLongitude,ulGPSRxCntr,ulGPSTxCntr,uiWakeupCounter,uiWatchdogCounter,ucBtteryLevel);
ranaumarnaeem 37:43d48521d4d7 198 printf( "AssetMsg: %s\r\n", caLssFinalAssetMsg );
ranaumarnaeem 37:43d48521d4d7 199 }
ranaumarnaeem 37:43d48521d4d7 200 else // else if(bHeartBeatFlag)
ranaumarnaeem 37:43d48521d4d7 201 {
ranaumarnaeem 37:43d48521d4d7 202 //bHeartBeatFlag = false;
ranaumarnaeem 37:43d48521d4d7 203 sprintf( caLssFinalAssetMsg, "$AQLSS,02,%s,%s*xx",devStatus.imei,devStatus.imsi);
ranaumarnaeem 37:43d48521d4d7 204 printf( "HeartBeat: %s\r\n", caLssFinalAssetMsg );
ranaumarnaeem 37:43d48521d4d7 205 }
ranaumarnaeem 39:4f3f7463e55f 206
ranaumarnaeem 37:43d48521d4d7 207 ssocket = mdm.socketSocket(MDMParser::IPPROTO_UDP, pport);
ranaumarnaeem 37:43d48521d4d7 208 if( ssocket >= 0 )
ranaumarnaeem 37:43d48521d4d7 209 {
ranaumarnaeem 37:43d48521d4d7 210 mdm.socketSetBlocking(ssocket, 10);
ranaumarnaeem 37:43d48521d4d7 211 ipp = 0x97092263;//0x052753CE;
ranaumarnaeem 39:4f3f7463e55f 212 if (PASS == test_exchange_func(caLssFinalAssetMsg,strlen(caLssFinalAssetMsg),ucReturnCode))
ranaumarnaeem 37:43d48521d4d7 213 {
ranaumarnaeem 37:43d48521d4d7 214 printf("\r\n-----------------<pass>-----------------\n");
ranaumarnaeem 37:43d48521d4d7 215 }
ranaumarnaeem 37:43d48521d4d7 216 else
ranaumarnaeem 37:43d48521d4d7 217 printf("\r\n-----------------<fail>-----------------\n");
ranaumarnaeem 37:43d48521d4d7 218
ranaumarnaeem 37:43d48521d4d7 219 mdm.socketFree(ssocket);
ranaumarnaeem 37:43d48521d4d7 220 responce_checker();
ranaumarnaeem 39:4f3f7463e55f 221 }
ranaumarnaeem 37:43d48521d4d7 222
ranaumarnaeem 37:43d48521d4d7 223 mdm.disconnect();
ranaumarnaeem 39:4f3f7463e55f 224 /*mdm.powerOff();*/
ranaumarnaeem 39:4f3f7463e55f 225
ranaumarnaeem 37:43d48521d4d7 226 if(bSleepModeFlag)
ranaumarnaeem 37:43d48521d4d7 227 {
ranaumarnaeem 39:4f3f7463e55f 228 rtc_setup(alarmtime,10);
ranaumarnaeem 39:4f3f7463e55f 229 printf("Enter Sleep Mode\r\n");
ranaumarnaeem 39:4f3f7463e55f 230 hal_sleep();
ranaumarnaeem 39:4f3f7463e55f 231 printf("Exit Sleep Mode\r\n");
ranaumarnaeem 39:4f3f7463e55f 232 myled = !myled;
ranaumarnaeem 39:4f3f7463e55f 233 uiWakeupCounter++;
ranaumarnaeem 37:43d48521d4d7 234 }
ranaumarnaeem 39:4f3f7463e55f 235
ranaumarnaeem 39:4f3f7463e55f 236 /*if(bSendingDataFlag)
ranaumarnaeem 37:43d48521d4d7 237 wait( 10 );
ranaumarnaeem 34:d6ce8f961b8b 238 else
ranaumarnaeem 37:43d48521d4d7 239 wait( 60 );
ranaumarnaeem 39:4f3f7463e55f 240 myled = !myled;*/
ranaumarnaeem 34:d6ce8f961b8b 241 }
ranaumarnaeem 37:43d48521d4d7 242 //}
ranaumarnaeem 37:43d48521d4d7 243 }
ranaumarnaeem 34:d6ce8f961b8b 244 return 0;
ranaumarnaeem 34:d6ce8f961b8b 245 }
ranaumarnaeem 34:d6ce8f961b8b 246 //----------------------------------------------------------------------------------------------------------------------
ranaumarnaeem 37:43d48521d4d7 247 //----------------------------------------------------------------------------------------------------------------------l
ranaumarnaeem 37:43d48521d4d7 248 int initialize_modem(void)
ranaumarnaeem 37:43d48521d4d7 249 {
ranaumarnaeem 37:43d48521d4d7 250 bool mdmOk = gmdm->init(SIMPIN, &devStatus);
ranaumarnaeem 37:43d48521d4d7 251 gmdm->dumpDevStatus(&devStatus);
ranaumarnaeem 37:43d48521d4d7 252 if (mdmOk)
ranaumarnaeem 37:43d48521d4d7 253 {
ranaumarnaeem 37:43d48521d4d7 254 MDMParser::IP ipp = gmdm->join(APN,USERNAME,PASSWORD); // join the internet connection
ranaumarnaeem 37:43d48521d4d7 255 if (ipp == NOIP)
ranaumarnaeem 37:43d48521d4d7 256 {
ranaumarnaeem 37:43d48521d4d7 257 printf( "AQ-LSS: Modem NOT initialized\n" );
ranaumarnaeem 37:43d48521d4d7 258 gmdm->powerOff();
ranaumarnaeem 37:43d48521d4d7 259 return 0;
ranaumarnaeem 37:43d48521d4d7 260 }
ranaumarnaeem 37:43d48521d4d7 261 else
ranaumarnaeem 37:43d48521d4d7 262 {
ranaumarnaeem 37:43d48521d4d7 263 printf( "AQ-LSS: Modem initialized\n" );
ranaumarnaeem 37:43d48521d4d7 264 //ussd_send();
ranaumarnaeem 37:43d48521d4d7 265 return 1;
ranaumarnaeem 37:43d48521d4d7 266 }
ranaumarnaeem 37:43d48521d4d7 267 }
ranaumarnaeem 37:43d48521d4d7 268 else
ranaumarnaeem 37:43d48521d4d7 269 {
ranaumarnaeem 37:43d48521d4d7 270 return 0;
ranaumarnaeem 37:43d48521d4d7 271 }
ranaumarnaeem 37:43d48521d4d7 272 }
ranaumarnaeem 34:d6ce8f961b8b 273 int recv(int socket_d, char *buf, int len)
ranaumarnaeem 34:d6ce8f961b8b 274 {
ranaumarnaeem 34:d6ce8f961b8b 275 int ret = gmdm->socketRecvFrom(ssocket, &ipp, &pport, buf, len);
ranaumarnaeem 34:d6ce8f961b8b 276 return ret;
ranaumarnaeem 34:d6ce8f961b8b 277 }
ranaumarnaeem 34:d6ce8f961b8b 278
ranaumarnaeem 34:d6ce8f961b8b 279 int send(int socket_d, char *buf, int len)
ranaumarnaeem 34:d6ce8f961b8b 280 {
ranaumarnaeem 34:d6ce8f961b8b 281 ipp = gmdm->gethostbyname(host);
ranaumarnaeem 37:43d48521d4d7 282 ipp = 0x97092263;//0x052753CE;
ranaumarnaeem 34:d6ce8f961b8b 283 int ret = gmdm->socketSendTo(ssocket, ipp, pport, (char*)buf, len);
ranaumarnaeem 34:d6ce8f961b8b 284 return ret;
ranaumarnaeem 34:d6ce8f961b8b 285 }
ranaumarnaeem 34:d6ce8f961b8b 286
ranaumarnaeem 37:43d48521d4d7 287 int readseconds(void)
ranaumarnaeem 34:d6ce8f961b8b 288 {
ranaumarnaeem 37:43d48521d4d7 289 unsigned int seconds = us_ticker_read()/1000000;
ranaumarnaeem 37:43d48521d4d7 290 return seconds;
ranaumarnaeem 34:d6ce8f961b8b 291 }
ranaumarnaeem 34:d6ce8f961b8b 292
ranaumarnaeem 37:43d48521d4d7 293 /*
ranaumarnaeem 34:d6ce8f961b8b 294 void ussd_send(void)
ranaumarnaeem 34:d6ce8f961b8b 295 {
ranaumarnaeem 34:d6ce8f961b8b 296 int ret;
ranaumarnaeem 34:d6ce8f961b8b 297 char buffer[512];
ranaumarnaeem 34:d6ce8f961b8b 298 const char* ussd = "*222#";//"*100#";
ranaumarnaeem 34:d6ce8f961b8b 299 printf("Ussd Send Command %s\r\n", ussd);
ranaumarnaeem 34:d6ce8f961b8b 300 ret = gmdm->ussdCommand(ussd, buffer);
ranaumarnaeem 34:d6ce8f961b8b 301 if (ret > 0)
ranaumarnaeem 34:d6ce8f961b8b 302 printf("Ussd Got Answer: \"%s\"\r\n", buffer);
ranaumarnaeem 34:d6ce8f961b8b 303 }
ranaumarnaeem 37:43d48521d4d7 304 */
ranaumarnaeem 37:43d48521d4d7 305
ranaumarnaeem 37:43d48521d4d7 306 void responce_checker(void)
ranaumarnaeem 39:4f3f7463e55f 307 {
ranaumarnaeem 37:43d48521d4d7 308 if(!strcmp((const char*)ucReturnCode,"RC 000"))
ranaumarnaeem 37:43d48521d4d7 309 {
ranaumarnaeem 37:43d48521d4d7 310 printf("Acknowledged RC 000\r\n");
ranaumarnaeem 37:43d48521d4d7 311 }
ranaumarnaeem 37:43d48521d4d7 312 else if(!strcmp((const char*)ucReturnCode,"RC 001"))
ranaumarnaeem 37:43d48521d4d7 313 {
ranaumarnaeem 37:43d48521d4d7 314 printf("Acknowledged with Data RC 001\r\n");
ranaumarnaeem 37:43d48521d4d7 315 }
ranaumarnaeem 37:43d48521d4d7 316 else if(!strcmp((const char*)ucReturnCode,"RC 002"))
ranaumarnaeem 37:43d48521d4d7 317 {
ranaumarnaeem 37:43d48521d4d7 318 printf("Start Sending Data RC 002\r\n");
ranaumarnaeem 37:43d48521d4d7 319 bSendingDataFlag = true;
ranaumarnaeem 37:43d48521d4d7 320 }
ranaumarnaeem 37:43d48521d4d7 321 else if(!strcmp((const char*)ucReturnCode,"RC 003"))
ranaumarnaeem 37:43d48521d4d7 322 {
ranaumarnaeem 37:43d48521d4d7 323 printf("Stop Sending Data RC 003\r\n");
ranaumarnaeem 37:43d48521d4d7 324 bSendingDataFlag = false;
ranaumarnaeem 37:43d48521d4d7 325 }
ranaumarnaeem 37:43d48521d4d7 326 else if(!strcmp((const char*)ucReturnCode,"RC 004"))
ranaumarnaeem 37:43d48521d4d7 327 {
ranaumarnaeem 37:43d48521d4d7 328 printf("Enable Sleep mode RC 004\r\n");
ranaumarnaeem 37:43d48521d4d7 329 bSleepModeFlag = true;
ranaumarnaeem 37:43d48521d4d7 330 }
ranaumarnaeem 37:43d48521d4d7 331 else if(!strcmp((const char*)ucReturnCode,"RC 005"))
ranaumarnaeem 37:43d48521d4d7 332 {
ranaumarnaeem 37:43d48521d4d7 333 printf("Disable Sleep mode RC 005\r\n");
ranaumarnaeem 37:43d48521d4d7 334 bSleepModeFlag = false;
ranaumarnaeem 37:43d48521d4d7 335 }
ranaumarnaeem 37:43d48521d4d7 336 else if(!strcmp((const char*)ucReturnCode,"RC 006"))
ranaumarnaeem 37:43d48521d4d7 337 {
ranaumarnaeem 37:43d48521d4d7 338 printf("Reboot Client Return Code 006\r\n");
ranaumarnaeem 37:43d48521d4d7 339 NVIC_SystemReset();
ranaumarnaeem 37:43d48521d4d7 340 }
ranaumarnaeem 37:43d48521d4d7 341 else if(!strcmp((const char*)ucReturnCode,"EC 000"))
ranaumarnaeem 37:43d48521d4d7 342 {
ranaumarnaeem 37:43d48521d4d7 343 printf("Error Code 000 Received Connection with web server failed\r\n");
ranaumarnaeem 37:43d48521d4d7 344 }
ranaumarnaeem 37:43d48521d4d7 345 else if(!strcmp((const char*)ucReturnCode,"EC 001"))
ranaumarnaeem 37:43d48521d4d7 346 {
ranaumarnaeem 37:43d48521d4d7 347 printf("Error Code 001 Received Node IMEI is not registered on Server\r\n");
ranaumarnaeem 37:43d48521d4d7 348 }
ranaumarnaeem 37:43d48521d4d7 349 else if(!strcmp((const char*)ucReturnCode,"EC 002"))
ranaumarnaeem 37:43d48521d4d7 350 {
ranaumarnaeem 37:43d48521d4d7 351 printf("Error Code 002 Received Payload is corrupted\r\n");
ranaumarnaeem 39:4f3f7463e55f 352 }
ranaumarnaeem 37:43d48521d4d7 353 }