test2
Dependencies: C12832 mbed-http
Fork of Mbed-to-cybozu-kintone_get_sample by
main.cpp@1:b1a105041b2b, 2018-08-02 (annotated)
- Committer:
- himatsumoto
- Date:
- Thu Aug 02 06:51:14 2018 +0000
- Revision:
- 1:b1a105041b2b
- Parent:
- 0:5c7abfb1236c
- Child:
- 2:0167319fff74
test2
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
JKsoft_main | 0:5c7abfb1236c | 1 | #include "mbed.h" |
JKsoft_main | 0:5c7abfb1236c | 2 | #include <sstream> |
JKsoft_main | 0:5c7abfb1236c | 3 | #include "easy-connect.h" |
JKsoft_main | 0:5c7abfb1236c | 4 | #include "https_request.h" |
JKsoft_main | 0:5c7abfb1236c | 5 | #include "ssl_ca_pem.h" |
JKsoft_main | 0:5c7abfb1236c | 6 | #include "C12832.h" |
JKsoft_main | 0:5c7abfb1236c | 7 | |
JKsoft_main | 0:5c7abfb1236c | 8 | C12832 lcd(D11, D13, D12, D7, D10); |
JKsoft_main | 0:5c7abfb1236c | 9 | DigitalIn up(A2); |
JKsoft_main | 0:5c7abfb1236c | 10 | DigitalIn down(A3); |
JKsoft_main | 0:5c7abfb1236c | 11 | DigitalIn left(A4); |
JKsoft_main | 0:5c7abfb1236c | 12 | DigitalIn right(A5); |
JKsoft_main | 0:5c7abfb1236c | 13 | DigitalIn fire(D4); |
JKsoft_main | 0:5c7abfb1236c | 14 | PwmOut spkr(D6); |
JKsoft_main | 0:5c7abfb1236c | 15 | |
JKsoft_main | 0:5c7abfb1236c | 16 | Serial pc(USBTX,USBRX); |
JKsoft_main | 0:5c7abfb1236c | 17 | |
JKsoft_main | 0:5c7abfb1236c | 18 | const char API_TOKEN[] = "api-token"; |
himatsumoto | 1:b1a105041b2b | 19 | const char URL[] = "https://owtd6.cybozu.com/k/v1/record.json"; |
JKsoft_main | 0:5c7abfb1236c | 20 | |
JKsoft_main | 0:5c7abfb1236c | 21 | int app_id = 2; |
JKsoft_main | 0:5c7abfb1236c | 22 | |
JKsoft_main | 0:5c7abfb1236c | 23 | // JSON simplicity parser |
JKsoft_main | 0:5c7abfb1236c | 24 | char* j_paser( const char *buf , char *word , char *out ) |
JKsoft_main | 0:5c7abfb1236c | 25 | { |
JKsoft_main | 0:5c7abfb1236c | 26 | int i = 0; |
JKsoft_main | 0:5c7abfb1236c | 27 | char *p; |
JKsoft_main | 0:5c7abfb1236c | 28 | char _word[64] = "\"\0"; |
JKsoft_main | 0:5c7abfb1236c | 29 | |
JKsoft_main | 0:5c7abfb1236c | 30 | strcat(_word , word ); |
JKsoft_main | 0:5c7abfb1236c | 31 | strcat(_word , "\"" ); |
JKsoft_main | 0:5c7abfb1236c | 32 | |
JKsoft_main | 0:5c7abfb1236c | 33 | p = strstr( (char*)buf , _word ) + 2 + strlen(_word); |
JKsoft_main | 0:5c7abfb1236c | 34 | |
JKsoft_main | 0:5c7abfb1236c | 35 | while( (p[i] != ',')&&(p[i] != '\n')&&(p[i] != '"') ) |
JKsoft_main | 0:5c7abfb1236c | 36 | { |
JKsoft_main | 0:5c7abfb1236c | 37 | out[i] = p[i]; |
JKsoft_main | 0:5c7abfb1236c | 38 | i++; |
JKsoft_main | 0:5c7abfb1236c | 39 | } |
JKsoft_main | 0:5c7abfb1236c | 40 | out[i] = '\0'; |
JKsoft_main | 0:5c7abfb1236c | 41 | |
JKsoft_main | 0:5c7abfb1236c | 42 | return p; |
JKsoft_main | 0:5c7abfb1236c | 43 | } |
JKsoft_main | 0:5c7abfb1236c | 44 | |
JKsoft_main | 0:5c7abfb1236c | 45 | // main() runs in its own thread in the OS |
JKsoft_main | 0:5c7abfb1236c | 46 | int main() { |
JKsoft_main | 0:5c7abfb1236c | 47 | NetworkInterface* network = NULL; |
JKsoft_main | 0:5c7abfb1236c | 48 | |
JKsoft_main | 0:5c7abfb1236c | 49 | pc.baud(115200); |
JKsoft_main | 0:5c7abfb1236c | 50 | |
JKsoft_main | 0:5c7abfb1236c | 51 | lcd.cls(); |
JKsoft_main | 0:5c7abfb1236c | 52 | lcd.locate(0,3); |
JKsoft_main | 0:5c7abfb1236c | 53 | lcd.printf("Network Connect.."); |
JKsoft_main | 0:5c7abfb1236c | 54 | |
JKsoft_main | 0:5c7abfb1236c | 55 | pc.printf("\r\n----- Start -----\r\n"); |
JKsoft_main | 0:5c7abfb1236c | 56 | |
JKsoft_main | 0:5c7abfb1236c | 57 | network = easy_connect(true); // If true, prints out connection details. |
JKsoft_main | 0:5c7abfb1236c | 58 | if (!network) { |
JKsoft_main | 0:5c7abfb1236c | 59 | lcd.printf("NG"); |
JKsoft_main | 0:5c7abfb1236c | 60 | pc.printf("\r\n----- Network Error -----\r\n"); |
JKsoft_main | 0:5c7abfb1236c | 61 | return -1; |
JKsoft_main | 0:5c7abfb1236c | 62 | } |
JKsoft_main | 0:5c7abfb1236c | 63 | |
JKsoft_main | 0:5c7abfb1236c | 64 | lcd.printf("OK"); |
JKsoft_main | 0:5c7abfb1236c | 65 | pc.printf("\r\n----- Network Connected -----\r\n"); |
JKsoft_main | 0:5c7abfb1236c | 66 | |
JKsoft_main | 0:5c7abfb1236c | 67 | wait(2.0); |
JKsoft_main | 0:5c7abfb1236c | 68 | |
JKsoft_main | 0:5c7abfb1236c | 69 | while(1){ |
JKsoft_main | 0:5c7abfb1236c | 70 | int id = 1; |
JKsoft_main | 0:5c7abfb1236c | 71 | |
JKsoft_main | 0:5c7abfb1236c | 72 | // ID select |
JKsoft_main | 0:5c7abfb1236c | 73 | lcd.cls(); |
JKsoft_main | 0:5c7abfb1236c | 74 | lcd.locate(0,3); |
JKsoft_main | 0:5c7abfb1236c | 75 | lcd.printf("Please select id."); |
JKsoft_main | 0:5c7abfb1236c | 76 | while(fire == 0){ |
JKsoft_main | 0:5c7abfb1236c | 77 | lcd.locate(0,14); |
JKsoft_main | 0:5c7abfb1236c | 78 | lcd.printf("id = "); |
JKsoft_main | 0:5c7abfb1236c | 79 | if( up == 1) id++; |
JKsoft_main | 0:5c7abfb1236c | 80 | if( down == 1) id--; |
JKsoft_main | 0:5c7abfb1236c | 81 | lcd.printf("%d ",id); |
JKsoft_main | 0:5c7abfb1236c | 82 | wait(0.2); |
JKsoft_main | 0:5c7abfb1236c | 83 | } |
JKsoft_main | 0:5c7abfb1236c | 84 | |
JKsoft_main | 0:5c7abfb1236c | 85 | lcd.cls(); |
JKsoft_main | 0:5c7abfb1236c | 86 | lcd.locate(0,3); |
JKsoft_main | 0:5c7abfb1236c | 87 | lcd.printf("It is polling with the selected id."); |
JKsoft_main | 0:5c7abfb1236c | 88 | |
JKsoft_main | 0:5c7abfb1236c | 89 | // Set url |
JKsoft_main | 0:5c7abfb1236c | 90 | std::stringstream ss_url; |
JKsoft_main | 0:5c7abfb1236c | 91 | std::string s_url(URL); |
JKsoft_main | 0:5c7abfb1236c | 92 | |
JKsoft_main | 0:5c7abfb1236c | 93 | ss_url << s_url << "?app=" << app_id << "&id=" << id; |
JKsoft_main | 0:5c7abfb1236c | 94 | |
JKsoft_main | 0:5c7abfb1236c | 95 | string url = ss_url.str(); |
JKsoft_main | 0:5c7abfb1236c | 96 | |
JKsoft_main | 0:5c7abfb1236c | 97 | pc.printf("%s\r\n",url.c_str()); |
JKsoft_main | 0:5c7abfb1236c | 98 | |
JKsoft_main | 0:5c7abfb1236c | 99 | while(1){ |
JKsoft_main | 0:5c7abfb1236c | 100 | pc.printf("\r\n----- HTTPS GET request -----\r\n"); |
JKsoft_main | 0:5c7abfb1236c | 101 | HttpsRequest* get_req = new HttpsRequest(network, SSL_CA_PEM, HTTP_GET, url.c_str()); |
JKsoft_main | 0:5c7abfb1236c | 102 | |
JKsoft_main | 0:5c7abfb1236c | 103 | get_req->set_header("X-Cybozu-API-Token", API_TOKEN); |
JKsoft_main | 0:5c7abfb1236c | 104 | |
JKsoft_main | 0:5c7abfb1236c | 105 | HttpResponse* get_res = get_req->send(); |
JKsoft_main | 0:5c7abfb1236c | 106 | |
JKsoft_main | 0:5c7abfb1236c | 107 | pc.printf("\n----- HTTPS GET response [%d]-----\n",get_res->get_status_code()); |
JKsoft_main | 0:5c7abfb1236c | 108 | |
JKsoft_main | 0:5c7abfb1236c | 109 | if(get_res->get_status_code() == 200){ |
JKsoft_main | 0:5c7abfb1236c | 110 | pc.printf("\n----- HTTPS GET response 200 -----\n"); |
JKsoft_main | 0:5c7abfb1236c | 111 | const char* body = get_res->get_body_as_string().c_str(); |
JKsoft_main | 0:5c7abfb1236c | 112 | |
JKsoft_main | 0:5c7abfb1236c | 113 | pc.printf("%s\r\n",body); |
JKsoft_main | 0:5c7abfb1236c | 114 | |
JKsoft_main | 0:5c7abfb1236c | 115 | // Response JSON parse |
JKsoft_main | 0:5c7abfb1236c | 116 | char value[256]; |
JKsoft_main | 0:5c7abfb1236c | 117 | |
JKsoft_main | 0:5c7abfb1236c | 118 | char* p = j_paser(body,"日付",value); |
JKsoft_main | 0:5c7abfb1236c | 119 | j_paser(p,"value",value); |
JKsoft_main | 0:5c7abfb1236c | 120 | printf("date:%s\r\n",value); |
JKsoft_main | 0:5c7abfb1236c | 121 | |
JKsoft_main | 0:5c7abfb1236c | 122 | lcd.cls(); |
JKsoft_main | 0:5c7abfb1236c | 123 | lcd.locate(0,3); |
JKsoft_main | 0:5c7abfb1236c | 124 | lcd.printf("Date:%s",value); |
JKsoft_main | 0:5c7abfb1236c | 125 | |
JKsoft_main | 0:5c7abfb1236c | 126 | p = j_paser(body,"文字列__1行_",value); |
JKsoft_main | 0:5c7abfb1236c | 127 | j_paser(p,"value",value); |
JKsoft_main | 0:5c7abfb1236c | 128 | printf("%s\r\n",value); |
JKsoft_main | 0:5c7abfb1236c | 129 | |
JKsoft_main | 0:5c7abfb1236c | 130 | lcd.locate(0,14); |
JKsoft_main | 0:5c7abfb1236c | 131 | lcd.printf("name:%s",value); |
JKsoft_main | 0:5c7abfb1236c | 132 | |
JKsoft_main | 0:5c7abfb1236c | 133 | // Sound an alert |
JKsoft_main | 0:5c7abfb1236c | 134 | spkr.period(1.0/5000.0); |
JKsoft_main | 0:5c7abfb1236c | 135 | spkr=0.5; |
JKsoft_main | 0:5c7abfb1236c | 136 | wait(1.0); |
JKsoft_main | 0:5c7abfb1236c | 137 | spkr=0.0; |
JKsoft_main | 0:5c7abfb1236c | 138 | |
JKsoft_main | 0:5c7abfb1236c | 139 | delete get_req; |
JKsoft_main | 0:5c7abfb1236c | 140 | |
JKsoft_main | 0:5c7abfb1236c | 141 | break; |
JKsoft_main | 0:5c7abfb1236c | 142 | } |
JKsoft_main | 0:5c7abfb1236c | 143 | |
JKsoft_main | 0:5c7abfb1236c | 144 | delete get_req; |
JKsoft_main | 0:5c7abfb1236c | 145 | |
JKsoft_main | 0:5c7abfb1236c | 146 | wait(10.0); |
JKsoft_main | 0:5c7abfb1236c | 147 | } |
JKsoft_main | 0:5c7abfb1236c | 148 | |
JKsoft_main | 0:5c7abfb1236c | 149 | while(fire == 0); |
JKsoft_main | 0:5c7abfb1236c | 150 | wait(1.0); |
JKsoft_main | 0:5c7abfb1236c | 151 | } |
JKsoft_main | 0:5c7abfb1236c | 152 | } |
JKsoft_main | 0:5c7abfb1236c | 153 |