final

Fork of C027_SupportTest by u-blox

Committer:
david8251
Date:
Thu Jul 20 09:02:49 2017 +0000
Revision:
34:2d06e42fac2c
Parent:
33:e27f40fada64
final

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lawliet 0:4e3cb26f6019 1 #include "mbed.h"
david8251 34:2d06e42fac2c 2 #include "MMA7455.h"
david8251 34:2d06e42fac2c 3 #include "MDM.h"
mazgch 9:26f694bc31b4 4
david8251 34:2d06e42fac2c 5 #define PI 3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253
david8251 34:2d06e42fac2c 6
mazgch 30:062717f25e41 7 #define SIMPIN "1922"
david8251 34:2d06e42fac2c 8
mazgch 21:a090a5043e23 9 #define APN NULL
mazgch 19:f022ff746eb8 10 //! Set the user name for your APN, or NULL if not needed
mazgch 19:f022ff746eb8 11 #define USERNAME NULL
mazgch 19:f022ff746eb8 12 //! Set the password for your APN, or NULL if not needed
mazgch 19:f022ff746eb8 13 #define PASSWORD NULL
david8251 34:2d06e42fac2c 14
david8251 34:2d06e42fac2c 15 MMA7455 acc(p32,p31);
david8251 34:2d06e42fac2c 16
david8251 34:2d06e42fac2c 17 void task_MMA();
lawliet 0:4e3cb26f6019 18
msinig 29:16f1037626e3 19
david8251 34:2d06e42fac2c 20 double a,b,c;
david8251 34:2d06e42fac2c 21 char str[90];
david8251 34:2d06e42fac2c 22 char str1[90];
david8251 34:2d06e42fac2c 23 char str2[90];
lawliet 0:4e3cb26f6019 24 int main(void)
lawliet 0:4e3cb26f6019 25 {
david8251 34:2d06e42fac2c 26 acc.setMode(MMA7455::ModeMeasurement);
david8251 34:2d06e42fac2c 27 acc.setRange(MMA7455::Range_2g);
david8251 34:2d06e42fac2c 28 acc.calibrate();
david8251 34:2d06e42fac2c 29
mazgch 2:b77151f111a9 30 int ret;
mazgch 19:f022ff746eb8 31 #ifdef LARGE_DATA
mazgch 16:43f6de7bc38b 32 char buf[2048] = "";
mazgch 17:c293780a40ac 33 #else
mazgch 17:c293780a40ac 34 char buf[512] = "";
mazgch 17:c293780a40ac 35 #endif
david8251 34:2d06e42fac2c 36
david8251 34:2d06e42fac2c 37 MDMSerial mdm;
mazgch 19:f022ff746eb8 38 MDMParser::DevStatus devStatus = {};
mazgch 19:f022ff746eb8 39 MDMParser::NetStatus netStatus = {};
mazgch 10:d2da2028a233 40 bool mdmOk = mdm.init(SIMPIN, &devStatus);
mazgch 19:f022ff746eb8 41 mdm.dumpDevStatus(&devStatus);
david8251 34:2d06e42fac2c 42
david8251 34:2d06e42fac2c 43
david8251 34:2d06e42fac2c 44
david8251 34:2d06e42fac2c 45 task_MMA();
david8251 34:2d06e42fac2c 46
david8251 34:2d06e42fac2c 47
david8251 34:2d06e42fac2c 48
mazgch 19:f022ff746eb8 49 if (mdmOk) {
mazgch 20:52f0e5de8c3d 50 #if 0
mazgch 20:52f0e5de8c3d 51 // file system API
mazgch 19:f022ff746eb8 52 const char* filename = "File";
mazgch 19:f022ff746eb8 53 char buf[] = "Hello World";
mazgch 19:f022ff746eb8 54 printf("writeFile \"%s\"\r\n", buf);
mazgch 19:f022ff746eb8 55 if (mdm.writeFile(filename, buf, sizeof(buf)))
mazgch 19:f022ff746eb8 56 {
mazgch 19:f022ff746eb8 57 memset(buf, 0, sizeof(buf));
mazgch 19:f022ff746eb8 58 int len = mdm.readFile(filename, buf, sizeof(buf));
mazgch 24:81f5b43a6585 59 if (len >= 0)
mazgch 19:f022ff746eb8 60 printf("readFile %d \"%.*s\"\r\n", len, len, buf);
mazgch 19:f022ff746eb8 61 mdm.delFile(filename);
mazgch 19:f022ff746eb8 62 }
mazgch 20:52f0e5de8c3d 63 #endif
mazgch 20:52f0e5de8c3d 64 mdmOk = mdm.registerNet(&netStatus);
mazgch 20:52f0e5de8c3d 65 mdm.dumpNetStatus(&netStatus);
mazgch 20:52f0e5de8c3d 66 }
mazgch 20:52f0e5de8c3d 67 if (mdmOk)
mazgch 20:52f0e5de8c3d 68 {
mazgch 4:90ab1ec64b0e 69 // join the internet connection
mazgch 19:f022ff746eb8 70 MDMParser::IP ip = mdm.join(APN,USERNAME,PASSWORD);
mazgch 32:b838fcaba45e 71 if (ip == NOIP)
mazgch 32:b838fcaba45e 72 printf("Not able to join network");
mazgch 32:b838fcaba45e 73 else
mazgch 2:b77151f111a9 74 {
mazgch 19:f022ff746eb8 75 mdm.dumpIp(ip);
mazgch 19:f022ff746eb8 76 printf("Make a Http Post Request\r\n");
mazgch 4:90ab1ec64b0e 77 int socket = mdm.socketSocket(MDMParser::IPPROTO_TCP);
mazgch 4:90ab1ec64b0e 78 if (socket >= 0)
mazgch 2:b77151f111a9 79 {
mazgch 16:43f6de7bc38b 80 mdm.socketSetBlocking(socket, 10000);
david8251 34:2d06e42fac2c 81 if (mdm.socketConnect(socket, "140.118.206.213", 555))
mazgch 4:90ab1ec64b0e 82 {
david8251 34:2d06e42fac2c 83 mdm.socketSend(socket, str, sizeof(str)-1);
mazgch 4:90ab1ec64b0e 84
mazgch 19:f022ff746eb8 85 ret = mdm.socketRecv(socket, buf, sizeof(buf)-1);
mazgch 19:f022ff746eb8 86 if (ret > 0)
mazgch 19:f022ff746eb8 87 printf("Socket Recv \"%*s\"\r\n", ret, buf);
mazgch 4:90ab1ec64b0e 88 mdm.socketClose(socket);
mazgch 4:90ab1ec64b0e 89 }
mazgch 4:90ab1ec64b0e 90 mdm.socketFree(socket);
mazgch 4:90ab1ec64b0e 91 }
mazgch 2:b77151f111a9 92
mazgch 16:43f6de7bc38b 93 int port = 7;
mazgch 16:43f6de7bc38b 94 const char* host = "echo.u-blox.com";
mazgch 16:43f6de7bc38b 95 MDMParser::IP ip = mdm.gethostbyname(host);
mazgch 16:43f6de7bc38b 96 char data[] = "\r\nxxx Socket Hello World\r\n"
mazgch 19:f022ff746eb8 97 #ifdef LARGE_DATA
mazgch 17:c293780a40ac 98 "00 0123456789 0123456789 0123456789 0123456789 0123456789 \r\n"
mazgch 17:c293780a40ac 99 "01 0123456789 0123456789 0123456789 0123456789 0123456789 \r\n"
mazgch 17:c293780a40ac 100 "02 0123456789 0123456789 0123456789 0123456789 0123456789 \r\n"
mazgch 17:c293780a40ac 101 "03 0123456789 0123456789 0123456789 0123456789 0123456789 \r\n"
mazgch 17:c293780a40ac 102 "04 0123456789 0123456789 0123456789 0123456789 0123456789 \r\n"
mazgch 17:c293780a40ac 103
mazgch 17:c293780a40ac 104 "05 0123456789 0123456789 0123456789 0123456789 0123456789 \r\n"
mazgch 17:c293780a40ac 105 "06 0123456789 0123456789 0123456789 0123456789 0123456789 \r\n"
mazgch 17:c293780a40ac 106 "07 0123456789 0123456789 0123456789 0123456789 0123456789 \r\n"
mazgch 17:c293780a40ac 107 "08 0123456789 0123456789 0123456789 0123456789 0123456789 \r\n"
mazgch 17:c293780a40ac 108 "09 0123456789 0123456789 0123456789 0123456789 0123456789 \r\n"
mazgch 16:43f6de7bc38b 109
mazgch 17:c293780a40ac 110 "10 0123456789 0123456789 0123456789 0123456789 0123456789 \r\n"
mazgch 17:c293780a40ac 111 "11 0123456789 0123456789 0123456789 0123456789 0123456789 \r\n"
mazgch 17:c293780a40ac 112 "12 0123456789 0123456789 0123456789 0123456789 0123456789 \r\n"
mazgch 17:c293780a40ac 113 "13 0123456789 0123456789 0123456789 0123456789 0123456789 \r\n"
mazgch 17:c293780a40ac 114 "14 0123456789 0123456789 0123456789 0123456789 0123456789 \r\n"
mazgch 17:c293780a40ac 115
mazgch 17:c293780a40ac 116 "15 0123456789 0123456789 0123456789 0123456789 0123456789 \r\n"
mazgch 17:c293780a40ac 117 "16 0123456789 0123456789 0123456789 0123456789 0123456789 \r\n"
mazgch 17:c293780a40ac 118 "17 0123456789 0123456789 0123456789 0123456789 0123456789 \r\n"
mazgch 17:c293780a40ac 119 "18 0123456789 0123456789 0123456789 0123456789 0123456789 \r\n"
mazgch 17:c293780a40ac 120 "19 0123456789 0123456789 0123456789 0123456789 0123456789 \r\n"
mazgch 16:43f6de7bc38b 121 #endif
mazgch 17:c293780a40ac 122 "End\r\n";
mazgch 16:43f6de7bc38b 123
mazgch 19:f022ff746eb8 124 printf("Testing TCP sockets with ECHO server\r\n");
mazgch 16:43f6de7bc38b 125 socket = mdm.socketSocket(MDMParser::IPPROTO_TCP);
mazgch 16:43f6de7bc38b 126 if (socket >= 0)
mazgch 16:43f6de7bc38b 127 {
mazgch 16:43f6de7bc38b 128 mdm.socketSetBlocking(socket, 10000);
mazgch 16:43f6de7bc38b 129 if (mdm.socketConnect(socket, host, port)) {
mazgch 16:43f6de7bc38b 130 memcpy(data, "\r\nTCP", 5);
mazgch 16:43f6de7bc38b 131 ret = mdm.socketSend(socket, data, sizeof(data)-1);
mazgch 16:43f6de7bc38b 132 if (ret == sizeof(data)-1) {
mazgch 19:f022ff746eb8 133 printf("Socket Send %d \"%s\"\r\n", ret, data);
mazgch 16:43f6de7bc38b 134 }
mazgch 16:43f6de7bc38b 135 ret = mdm.socketRecv(socket, buf, sizeof(buf)-1);
mazgch 16:43f6de7bc38b 136 if (ret >= 0) {
mazgch 19:f022ff746eb8 137 printf("Socket Recv %d \"%.*s\"\r\n", ret, ret, buf);
mazgch 16:43f6de7bc38b 138 }
mazgch 16:43f6de7bc38b 139 mdm.socketClose(socket);
mazgch 16:43f6de7bc38b 140 }
mazgch 16:43f6de7bc38b 141 mdm.socketFree(socket);
mazgch 16:43f6de7bc38b 142 }
mazgch 16:43f6de7bc38b 143
mazgch 19:f022ff746eb8 144 printf("Testing UDP sockets with ECHO server\r\n");
mazgch 16:43f6de7bc38b 145 socket = mdm.socketSocket(MDMParser::IPPROTO_UDP, port);
mazgch 16:43f6de7bc38b 146 if (socket >= 0)
mazgch 16:43f6de7bc38b 147 {
mazgch 16:43f6de7bc38b 148 mdm.socketSetBlocking(socket, 10000);
mazgch 16:43f6de7bc38b 149 memcpy(data, "\r\nUDP", 5);
mazgch 16:43f6de7bc38b 150 ret = mdm.socketSendTo(socket, ip, port, data, sizeof(data)-1);
mazgch 16:43f6de7bc38b 151 if (ret == sizeof(data)-1) {
mazgch 19:f022ff746eb8 152 printf("Socket SendTo %s:%d " IPSTR " %d \"%s\"\r\n", host, port, IPNUM(ip), ret, data);
mazgch 16:43f6de7bc38b 153 }
mazgch 16:43f6de7bc38b 154 ret = mdm.socketRecvFrom(socket, &ip, &port, buf, sizeof(buf)-1);
mazgch 16:43f6de7bc38b 155 if (ret >= 0) {
mazgch 19:f022ff746eb8 156 printf("Socket RecvFrom " IPSTR ":%d %d \"%.*s\" \r\n", IPNUM(ip),port, ret, ret,buf);
mazgch 16:43f6de7bc38b 157 }
mazgch 16:43f6de7bc38b 158 mdm.socketFree(socket);
mazgch 16:43f6de7bc38b 159 }
mazgch 16:43f6de7bc38b 160
mazgch 4:90ab1ec64b0e 161 // disconnect
mazgch 4:90ab1ec64b0e 162 mdm.disconnect();
mazgch 2:b77151f111a9 163 }
mazgch 30:062717f25e41 164
mazgch 30:062717f25e41 165 const char* ussd = "*130#"; // You may get answer "UNKNOWN APPLICATION"
mazgch 30:062717f25e41 166 printf("Ussd Send Command %s\r\n", ussd);
mazgch 30:062717f25e41 167 ret = mdm.ussdCommand(ussd, buf);
mazgch 30:062717f25e41 168 if (ret > 0)
mazgch 30:062717f25e41 169 printf("Ussd Got Answer: \"%s\"\r\n", buf);
mazgch 10:d2da2028a233 170 }
msinig 29:16f1037626e3 171 #ifdef CELLOCATE
msinig 29:16f1037626e3 172 const int sensorMask = 3; // Hybrid: GNSS + CellLocate
msinig 29:16f1037626e3 173 const int timeoutMargin = 5; // seconds
msinig 29:16f1037626e3 174 const int submitPeriod = 60; // 1 minutes in seconds
msinig 29:16f1037626e3 175 const int targetAccuracy = 1; // meters
msinig 29:16f1037626e3 176 unsigned int j = submitPeriod * 1000/wait;
msinig 29:16f1037626e3 177 bool cellLocWait = false;
msinig 29:16f1037626e3 178 MDMParser::CellLocData loc;
msinig 29:16f1037626e3 179
msinig 29:16f1037626e3 180 if (!mdm.cellLocSrvHttp("TOKEN"))
msinig 29:16f1037626e3 181 mdm.cellLocSrvUdp();
msinig 29:16f1037626e3 182 mdm.cellLocConfigSensor(1); // Deep scan mode
david8251 34:2d06e42fac2c 183
msinig 29:16f1037626e3 184 #endif
mazgch 10:d2da2028a233 185 mdm.powerOff();
lawliet 0:4e3cb26f6019 186 return 0;
lawliet 0:4e3cb26f6019 187 }
david8251 34:2d06e42fac2c 188 void task_MMA(){
david8251 34:2d06e42fac2c 189
david8251 34:2d06e42fac2c 190
david8251 34:2d06e42fac2c 191 char filename[64];
david8251 34:2d06e42fac2c 192 int32_t x,y,z;
david8251 34:2d06e42fac2c 193 double x1,y1,z1;
david8251 34:2d06e42fac2c 194 double xg,yg,zg;
david8251 34:2d06e42fac2c 195 double xd,yd,zd;
david8251 34:2d06e42fac2c 196 acc.read(x,y,z);
david8251 34:2d06e42fac2c 197
david8251 34:2d06e42fac2c 198 xg=x*0.016; //實際g值
david8251 34:2d06e42fac2c 199 yg=y*0.016; //實際g值
david8251 34:2d06e42fac2c 200 zg=z*0.016; //實際g值
david8251 34:2d06e42fac2c 201
david8251 34:2d06e42fac2c 202 x1=xg/(sqrt(pow(yg,2.0)+pow(zg,2.0)));
david8251 34:2d06e42fac2c 203 y1=yg/(sqrt(pow(xg,2.0)+pow(zg,2.0)));
david8251 34:2d06e42fac2c 204 z1=(sqrt(pow(yg,2.0)+pow(xg,2.0)))/zg;
david8251 34:2d06e42fac2c 205
david8251 34:2d06e42fac2c 206 xd=atan(x1); //徑度
david8251 34:2d06e42fac2c 207 yd=atan(y1); //徑度
david8251 34:2d06e42fac2c 208 zd=atan(z1); //徑度
david8251 34:2d06e42fac2c 209
david8251 34:2d06e42fac2c 210 a=xd*180.0/PI;
david8251 34:2d06e42fac2c 211 b=yd*180.0/PI;
david8251 34:2d06e42fac2c 212 c=zd*180.0/PI;
david8251 34:2d06e42fac2c 213
david8251 34:2d06e42fac2c 214 sprintf(str,"%.2f\t",a);
david8251 34:2d06e42fac2c 215 sprintf(str1,"%.2f\t",b);
david8251 34:2d06e42fac2c 216 sprintf(str2,"%.2f",c);
david8251 34:2d06e42fac2c 217
david8251 34:2d06e42fac2c 218 strcat(str,str1);
david8251 34:2d06e42fac2c 219 strcat(str,str2);
david8251 34:2d06e42fac2c 220
david8251 34:2d06e42fac2c 221 puts(str);
david8251 34:2d06e42fac2c 222
david8251 34:2d06e42fac2c 223
david8251 34:2d06e42fac2c 224 printf("xd: %.2f ",xd*180.0/PI);
david8251 34:2d06e42fac2c 225 printf("yd: %.2f ",yd*180.0/PI);
david8251 34:2d06e42fac2c 226 printf("zd: %.2f ",zd*180.0/PI);
david8251 34:2d06e42fac2c 227 printf("\r\n\n");
david8251 34:2d06e42fac2c 228 }