Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: EthernetInterface FXOS8700Q HTTPClient HTTPD MQTTS SDFileSystem YodiwoPlegma mbed-rpc mbed-rtos mbed wolfSSL
pairing_backend.cpp@1:c5abc450140c, 2015-09-01 (annotated)
- 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?
| User | Revision | Line number | New 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 |