Yodiwo / Mbed 2 deprecated YoPlegma

Dependencies:   EthernetInterface FXOS8700Q HTTPClient HTTPD MQTTS SDFileSystem YodiwoPlegma mbed-rpc mbed-rtos mbed wolfSSL

Committer:
mitsarionas
Date:
Tue Sep 01 12:01:50 2015 +0000
Revision:
1:c5abc450140c
Parent:
0:00797f1ebe04
Child:
2:b7489c070d1f
getting tokens

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mitsarionas 0:00797f1ebe04 1 #include "pairing_backend.h"
mitsarionas 0:00797f1ebe04 2 #include "HTTPClient.h"
mitsarionas 0:00797f1ebe04 3 #include "mbed.h"
mitsarionas 0:00797f1ebe04 4 #include "rtos.h"
mitsarionas 1:c5abc450140c 5 #include "yodiwo_helpers.h"
mitsarionas 1:c5abc450140c 6 #include "jsmn.h"
mitsarionas 0:00797f1ebe04 7
mitsarionas 0:00797f1ebe04 8 HTTPClient http;
mitsarionas 0:00797f1ebe04 9 char recvBuff[1024*20];
mitsarionas 0:00797f1ebe04 10 int __get_tokens(pairing_context *ctx);
mitsarionas 1:c5abc450140c 11
mitsarionas 0:00797f1ebe04 12 int pairing_context_init_with_defaults(pairing_context *ctx, onPaired_callback callback)
mitsarionas 0:00797f1ebe04 13 {
mitsarionas 0:00797f1ebe04 14 ctx->postUrl = "http://10.30.254.199:3334/pairing/";
mitsarionas 0:00797f1ebe04 15 ctx->uuid = "1337CNode";
mitsarionas 0:00797f1ebe04 16 ctx->name = "Nodas";
mitsarionas 0:00797f1ebe04 17 ctx->onPaired = callback;
mitsarionas 0:00797f1ebe04 18 return 0;
mitsarionas 0:00797f1ebe04 19 }
mitsarionas 0:00797f1ebe04 20
mitsarionas 0:00797f1ebe04 21 #define STACK_SIZE 24000
mitsarionas 0:00797f1ebe04 22
mitsarionas 0:00797f1ebe04 23 void get_tokens_thread(void const *arg);
mitsarionas 0:00797f1ebe04 24
mitsarionas 0:00797f1ebe04 25 int start_pairing(pairing_context *ctx)
mitsarionas 0:00797f1ebe04 26 {
mitsarionas 0:00797f1ebe04 27 printf("getting tokens from server\n");
mitsarionas 0:00797f1ebe04 28 Thread t(get_tokens_thread, ctx, osPriorityNormal, STACK_SIZE);
mitsarionas 0:00797f1ebe04 29 while (t.get_state() != Thread::Inactive) {
mitsarionas 0:00797f1ebe04 30 // printf("yielding... %d\n", t.get_state());
mitsarionas 0:00797f1ebe04 31 // Thread::yield();
mitsarionas 0:00797f1ebe04 32 // Thread::wait(1000);
mitsarionas 0:00797f1ebe04 33 }
mitsarionas 0:00797f1ebe04 34 printf("thread ended?\n");
mitsarionas 0:00797f1ebe04 35 return 0;
mitsarionas 0:00797f1ebe04 36 }
mitsarionas 0:00797f1ebe04 37
mitsarionas 0:00797f1ebe04 38 char str[512];
mitsarionas 0:00797f1ebe04 39 char url[100];
mitsarionas 0:00797f1ebe04 40
mitsarionas 0:00797f1ebe04 41 void get_tokens_thread(void const *arg)
mitsarionas 0:00797f1ebe04 42 {
mitsarionas 0:00797f1ebe04 43 printf("in thread\n");
mitsarionas 0:00797f1ebe04 44 __get_tokens((pairing_context *)arg);
mitsarionas 0:00797f1ebe04 45 }
mitsarionas 0:00797f1ebe04 46
mitsarionas 0:00797f1ebe04 47 int __get_tokens(pairing_context *ctx)
mitsarionas 0:00797f1ebe04 48 {
mitsarionas 0:00797f1ebe04 49
mitsarionas 0:00797f1ebe04 50 strcpy(url, ctx->postUrl);
mitsarionas 0:00797f1ebe04 51 strcat(url, "/gettokens");
mitsarionas 1:c5abc450140c 52 http.dumpReqHeader(true);
mitsarionas 1:c5abc450140c 53 http.dumpResHeader(true);
mitsarionas 0:00797f1ebe04 54 int ret;
mitsarionas 0:00797f1ebe04 55
mitsarionas 0:00797f1ebe04 56 //GET data
mitsarionas 0:00797f1ebe04 57 // printf("\nTrying to fetch page...\n");
mitsarionas 0:00797f1ebe04 58 // ret = http.get("http://mbed.org/media/uploads/donatien/hello.txt", str, 128);
mitsarionas 0:00797f1ebe04 59 // if (!ret)
mitsarionas 0:00797f1ebe04 60 // {
mitsarionas 0:00797f1ebe04 61 // printf("Page fetched successfully - read %d characters\n", strlen(str));
mitsarionas 0:00797f1ebe04 62 // printf("Result: %s\n", str);
mitsarionas 0:00797f1ebe04 63 // }
mitsarionas 0:00797f1ebe04 64 // else
mitsarionas 0:00797f1ebe04 65 // {
mitsarionas 0:00797f1ebe04 66 // printf("Error - ret = %d - HTTP return code = %d\n", ret, http.getHTTPResponseCode());
mitsarionas 0:00797f1ebe04 67 // }
mitsarionas 0:00797f1ebe04 68
mitsarionas 0:00797f1ebe04 69 //POST data
mitsarionas 0:00797f1ebe04 70 HTTPMap map;
mitsarionas 0:00797f1ebe04 71 HTTPText inText(str, 512);
mitsarionas 0:00797f1ebe04 72 map.put("name", ctx->name);
mitsarionas 0:00797f1ebe04 73 map.put("uuid", ctx->uuid);
mitsarionas 0:00797f1ebe04 74 printf("\nTrying to post data...\n");
mitsarionas 0:00797f1ebe04 75 ret = http.post(url, map, &inText);
mitsarionas 1:c5abc450140c 76 Yodiwo_Plegma_PairingServerTokensResponse_t tokens;
mitsarionas 0:00797f1ebe04 77 if (!ret)
mitsarionas 0:00797f1ebe04 78 {
mitsarionas 1:c5abc450140c 79 printf("Executed POST successfully - read %d characters\n", strlen(str));
mitsarionas 1:c5abc450140c 80 printf("Result: %s\n", str);
mitsarionas 1:c5abc450140c 81 int jret = Yodiwo_Plegma_PairingServerTokensResponse_FromJson(str, strlen(str), &tokens);
mitsarionas 1:c5abc450140c 82 if (jret == Yodiwo_JsonSuccessParse) {
mitsarionas 1:c5abc450140c 83 ctx->token1 = tokens.token1;
mitsarionas 1:c5abc450140c 84 ctx->token2 = tokens.token2;
mitsarionas 1:c5abc450140c 85 return 0;
mitsarionas 1:c5abc450140c 86 } else {
mitsarionas 1:c5abc450140c 87 printf("error parsing response");
mitsarionas 1:c5abc450140c 88 return -2;
mitsarionas 1:c5abc450140c 89 }
mitsarionas 1:c5abc450140c 90
mitsarionas 0:00797f1ebe04 91
mitsarionas 0:00797f1ebe04 92 }
mitsarionas 0:00797f1ebe04 93 else
mitsarionas 0:00797f1ebe04 94 {
mitsarionas 0:00797f1ebe04 95 printf("Error - ret = %d - HTTP return code = %d\n", ret, http.getHTTPResponseCode());
mitsarionas 0:00797f1ebe04 96 }
mitsarionas 0:00797f1ebe04 97 return ret;
mitsarionas 0:00797f1ebe04 98
mitsarionas 0:00797f1ebe04 99 }
mitsarionas 1:c5abc450140c 100