TCP send example

Dependencies:   FXOS8700CQ mbed

Fork of StarterKit by Rick McConney

Committer:
elmkom
Date:
Thu Feb 02 15:41:15 2017 +0000
Revision:
48:401a797a695f
Parent:
46:733edf15f9e8
republish

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JMF 0:9d5134074d84 1 #include "mbed.h"
JMF 0:9d5134074d84 2 #include <cctype>
JMF 0:9d5134074d84 3 #include "SerialBuffered.h"
JMF 2:0e2ef866af95 4 #include "config_me.h"
elmkom 42:8500f0cb2ea5 5 #include "Wnc.h"
JMF 0:9d5134074d84 6
elmkom 42:8500f0cb2ea5 7 extern SerialBuffered mdm;
elmkom 42:8500f0cb2ea5 8 Wnc wnc;
elmkom 46:733edf15f9e8 9 int seqNum =0;
elmkom 46:733edf15f9e8 10 int msgLen = 10;
elmkom 41:85a736a9b900 11
elmkom 36:f8d96ff1dd1b 12
JMF 0:9d5134074d84 13 // comment out the following line if color is not supported on the terminal
JMF 0:9d5134074d84 14 #define USE_COLOR
JMF 0:9d5134074d84 15 #ifdef USE_COLOR
JMF 0:9d5134074d84 16 #define BLK "\033[30m"
JMF 0:9d5134074d84 17 #define RED "\033[31m"
JMF 0:9d5134074d84 18 #define GRN "\033[32m"
JMF 0:9d5134074d84 19 #define YEL "\033[33m"
JMF 0:9d5134074d84 20 #define BLU "\033[34m"
JMF 0:9d5134074d84 21 #define MAG "\033[35m"
JMF 0:9d5134074d84 22 #define CYN "\033[36m"
JMF 0:9d5134074d84 23 #define WHT "\033[37m"
JMF 0:9d5134074d84 24 #define DEF "\033[39m"
JMF 0:9d5134074d84 25 #else
JMF 0:9d5134074d84 26 #define BLK
JMF 0:9d5134074d84 27 #define RED
JMF 0:9d5134074d84 28 #define GRN
JMF 0:9d5134074d84 29 #define YEL
JMF 0:9d5134074d84 30 #define BLU
JMF 0:9d5134074d84 31 #define MAG
JMF 0:9d5134074d84 32 #define CYN
JMF 0:9d5134074d84 33 #define WHT
JMF 0:9d5134074d84 34 #define DEF
JMF 0:9d5134074d84 35 #endif
JMF 0:9d5134074d84 36
JMF 0:9d5134074d84 37 #define MDM_DBG_OFF 0
JMF 0:9d5134074d84 38 #define MDM_DBG_AT_CMDS (1 << 0)
elmkom 36:f8d96ff1dd1b 39
elmkom 44:60008ebffdd4 40
elmkom 44:60008ebffdd4 41
JMF 0:9d5134074d84 42 int mdm_dbgmask = MDM_DBG_OFF;
JMF 0:9d5134074d84 43
JMF 0:9d5134074d84 44 Serial pc(USBTX, USBRX);
elmkom 42:8500f0cb2ea5 45
stefanrousseau 16:17c5916f2d12 46 DigitalOut led_green(LED_GREEN);
stefanrousseau 16:17c5916f2d12 47 DigitalOut led_red(LED_RED);
stefanrousseau 16:17c5916f2d12 48 DigitalOut led_blue(LED_BLUE);
JMF 0:9d5134074d84 49
JMF 0:9d5134074d84 50
JMF 0:9d5134074d84 51
elmkom 41:85a736a9b900 52
elmkom 44:60008ebffdd4 53
elmkom 46:733edf15f9e8 54 //DigitalIn slot1(PTB3,PullUp);
elmkom 46:733edf15f9e8 55 //DigitalIn slot2(PTB10,PullUp);
elmkom 46:733edf15f9e8 56 //DigitalIn slot3(PTB11,PullUp);
elmkom 42:8500f0cb2ea5 57
elmkom 45:fe90f1fcb4e0 58 DigitalIn sw2(SW2);
elmkom 45:fe90f1fcb4e0 59
elmkom 46:733edf15f9e8 60
JMF 0:9d5134074d84 61 #define TOUPPER(a) (a) //toupper(a)
JMF 0:9d5134074d84 62
JMF 0:9d5134074d84 63
JMF 0:9d5134074d84 64 #define MDM_OK 0
JMF 0:9d5134074d84 65 #define MDM_ERR_TIMEOUT -1
JMF 0:9d5134074d84 66
JMF 0:9d5134074d84 67 #define MAX_AT_RSP_LEN 255
elmkom 38:532a0d929756 68
elmkom 41:85a736a9b900 69 bool toggleLed = false;
elmkom 46:733edf15f9e8 70
elmkom 36:f8d96ff1dd1b 71
elmkom 38:532a0d929756 72
elmkom 36:f8d96ff1dd1b 73 //********************************************************************************************************************************************
elmkom 36:f8d96ff1dd1b 74 //* Set the RGB LED's Color
elmkom 36:f8d96ff1dd1b 75 //* LED Color 0=Off to 7=White. 3 bits represent BGR (bit0=Red, bit1=Green, bit2=Blue)
elmkom 36:f8d96ff1dd1b 76 //********************************************************************************************************************************************
elmkom 36:f8d96ff1dd1b 77 void SetLedColor(unsigned char ucColor)
elmkom 35:2e864bae3af0 78 {
elmkom 46:733edf15f9e8 79
elmkom 46:733edf15f9e8 80 //Note that when an LED is on, you write a 0 to it:
elmkom 46:733edf15f9e8 81 led_red = !(ucColor & 0x1); //bit 0
elmkom 46:733edf15f9e8 82 led_green = !(ucColor & 0x2); //bit 1
elmkom 46:733edf15f9e8 83 led_blue = !(ucColor & 0x4); //bit 2
elmkom 46:733edf15f9e8 84
elmkom 36:f8d96ff1dd1b 85 } //SetLedColor()
elmkom 35:2e864bae3af0 86
JMF 0:9d5134074d84 87
elmkom 36:f8d96ff1dd1b 88 void system_reset()
elmkom 36:f8d96ff1dd1b 89 {
elmkom 36:f8d96ff1dd1b 90 printf(RED "\n\rSystem resetting..." DEF "\n");
elmkom 36:f8d96ff1dd1b 91 NVIC_SystemReset();
elmkom 36:f8d96ff1dd1b 92 }
elmkom 46:733edf15f9e8 93
elmkom 46:733edf15f9e8 94 void GenerateTestString(char * modem_string,int len)
elmkom 46:733edf15f9e8 95 {
elmkom 46:733edf15f9e8 96 seqNum++;
elmkom 46:733edf15f9e8 97 char data[len+1];
elmkom 46:733edf15f9e8 98 for(int i = 0;i<len;i++)
elmkom 48:401a797a695f 99 data[i] = 'b';
elmkom 46:733edf15f9e8 100 data[len] = 0;
elmkom 46:733edf15f9e8 101 sprintf(modem_string, "%s", data);
elmkom 40:45e4636d20cc 102 }
stefanrousseau 16:17c5916f2d12 103
JMF 0:9d5134074d84 104 int main() {
elmkom 36:f8d96ff1dd1b 105
JMF 0:9d5134074d84 106 pc.baud(115200);
elmkom 42:8500f0cb2ea5 107
fkellermavnet 20:27a4f27254d0 108 // Set LED to RED until init finishes
fkellermavnet 20:27a4f27254d0 109 SetLedColor(0x1);
fkellermavnet 20:27a4f27254d0 110
elmkom 46:733edf15f9e8 111 pc.printf(BLU "Hello World\r\n\n\r");
stefanrousseau 11:e6602513730f 112
JMF 0:9d5134074d84 113 // Initialize the modem
JMF 0:9d5134074d84 114 printf(GRN "Modem initializing... will take up to 60 seconds" DEF "\r\n");
elmkom 45:fe90f1fcb4e0 115 if(!wnc.init())
elmkom 45:fe90f1fcb4e0 116 {
elmkom 45:fe90f1fcb4e0 117 pc.printf(RED "Modem initialization failed!" DEF "\n");
elmkom 45:fe90f1fcb4e0 118 system_reset();
elmkom 45:fe90f1fcb4e0 119 }
elmkom 46:733edf15f9e8 120
elmkom 46:733edf15f9e8 121 char* iccid = wnc.getIccid();
elmkom 42:8500f0cb2ea5 122 printf(GRN "ICCID = %s" DEF "\r\n",iccid);
elmkom 45:fe90f1fcb4e0 123
elmkom 45:fe90f1fcb4e0 124
elmkom 42:8500f0cb2ea5 125
JMF 2:0e2ef866af95 126 //Software init
elmkom 45:fe90f1fcb4e0 127 if(!wnc.startInternet())
elmkom 45:fe90f1fcb4e0 128 system_reset();
elmkom 45:fe90f1fcb4e0 129
elmkom 45:fe90f1fcb4e0 130 char* ip = wnc.resolveDn(MY_SERVER_URL);
elmkom 45:fe90f1fcb4e0 131 if(strlen(ip) == 0)
elmkom 45:fe90f1fcb4e0 132 {
elmkom 45:fe90f1fcb4e0 133 printf(RED "Failed to resolve IP for %s" DEF "\r\n",MY_SERVER_URL);
elmkom 45:fe90f1fcb4e0 134 }
elmkom 45:fe90f1fcb4e0 135 else
elmkom 45:fe90f1fcb4e0 136 printf(GRN "IP = %s" DEF "\r\n",ip);
stefanrousseau 3:26b3cc155f39 137
fkellermavnet 20:27a4f27254d0 138 // Set LED BLUE for partial init
fkellermavnet 20:27a4f27254d0 139 SetLedColor(0x4);
elmkom 44:60008ebffdd4 140
elmkom 46:733edf15f9e8 141 char modem_string[512];
elmkom 45:fe90f1fcb4e0 142
elmkom 46:733edf15f9e8 143 while(true)
elmkom 46:733edf15f9e8 144 {
elmkom 41:85a736a9b900 145 toggleLed = !toggleLed;
elmkom 41:85a736a9b900 146 if(toggleLed)
elmkom 41:85a736a9b900 147 SetLedColor(0x2); //green
elmkom 41:85a736a9b900 148 else
elmkom 46:733edf15f9e8 149 SetLedColor(0); //off
elmkom 46:733edf15f9e8 150
elmkom 45:fe90f1fcb4e0 151 if(sw2 == 0)
elmkom 46:733edf15f9e8 152 {
elmkom 46:733edf15f9e8 153 GenerateTestString(modem_string,msgLen);
elmkom 38:532a0d929756 154 printf(BLU "Sending to modem : %s" DEF "\r\n", modem_string);
elmkom 46:733edf15f9e8 155
elmkom 45:fe90f1fcb4e0 156 if(wnc.connect(ip,MY_PORT)) // shelf
elmkom 42:8500f0cb2ea5 157 {
elmkom 45:fe90f1fcb4e0 158 if(wnc.writeSocket(modem_string))
elmkom 46:733edf15f9e8 159 {
elmkom 45:fe90f1fcb4e0 160 char* mydata;
elmkom 45:fe90f1fcb4e0 161 int tries = 8;
elmkom 45:fe90f1fcb4e0 162 while(tries > 0) // wait for reply
elmkom 45:fe90f1fcb4e0 163 {
elmkom 45:fe90f1fcb4e0 164 tries--;
elmkom 45:fe90f1fcb4e0 165 mydata = wnc.readSocket();
elmkom 45:fe90f1fcb4e0 166 if (strlen(mydata) > 0)
elmkom 45:fe90f1fcb4e0 167 break;
elmkom 42:8500f0cb2ea5 168
elmkom 45:fe90f1fcb4e0 169 wait(0.5);
elmkom 45:fe90f1fcb4e0 170 }
elmkom 42:8500f0cb2ea5 171
elmkom 45:fe90f1fcb4e0 172 if (strlen(mydata) > 0)
elmkom 46:733edf15f9e8 173 {
elmkom 45:fe90f1fcb4e0 174 SetLedColor(0x2); // green
elmkom 45:fe90f1fcb4e0 175 printf(BLU "Read back : [%s]" DEF "\r\n", mydata);
elmkom 46:733edf15f9e8 176 sscanf(mydata,"LEN=%d",&msgLen);
elmkom 45:fe90f1fcb4e0 177 }
elmkom 42:8500f0cb2ea5 178 }
elmkom 42:8500f0cb2ea5 179 wnc.disconnect();
elmkom 38:532a0d929756 180 }
elmkom 42:8500f0cb2ea5 181 else // failed to connect reset
elmkom 38:532a0d929756 182 {
elmkom 38:532a0d929756 183 SetLedColor(0x1); //red
elmkom 42:8500f0cb2ea5 184 system_reset();
elmkom 46:733edf15f9e8 185 }
elmkom 38:532a0d929756 186 }
elmkom 38:532a0d929756 187 wait(0.2);
stefanrousseau 3:26b3cc155f39 188 } //forever loop
JMF 0:9d5134074d84 189 }