Initial version, CyaSSL Twilio example for FRDM-k64f

Dependencies:   HTTPClient EthernetInterface mbed-rtos mbed-src

Committer:
wolfSSL
Date:
Sat Jul 12 12:11:08 2014 +0000
Revision:
1:ac89f194b0eb
Parent:
0:f0cddf702172
CyaSSL under HTTPClient class

Who changed what in which revision?

UserRevisionLine numberNew contents of line
wolfSSL 0:f0cddf702172 1 #include "mbed.h"
wolfSSL 0:f0cddf702172 2 #include "EthernetInterface.h"
wolfSSL 0:f0cddf702172 3 #include "HTTPClient.h"
wolfSSL 0:f0cddf702172 4
wolfSSL 0:f0cddf702172 5 EthernetInterface eth;
wolfSSL 0:f0cddf702172 6 HTTPClient http;
wolfSSL 0:f0cddf702172 7
wolfSSL 0:f0cddf702172 8 static char str[1500] ;
wolfSSL 0:f0cddf702172 9
wolfSSL 0:f0cddf702172 10 void twilio_main(void const *av)
wolfSSL 0:f0cddf702172 11 {
wolfSSL 0:f0cddf702172 12 int ret ;
wolfSSL 0:f0cddf702172 13
wolfSSL 0:f0cddf702172 14 #define ALLOWANCE 100
wolfSSL 0:f0cddf702172 15 #define SAFIX 10
wolfSSL 0:f0cddf702172 16
wolfSSL 0:f0cddf702172 17 static char twilio_AccountSid[] = "TWILIO_ACCOUNT_SID" ;
wolfSSL 0:f0cddf702172 18 static char twilio_AuthToken[] = "AUTH_TOKEN" ;
wolfSSL 0:f0cddf702172 19
wolfSSL 0:f0cddf702172 20 static const char twilio_From[] = "PHONE_NUMBER_FROM" ;
wolfSSL 0:f0cddf702172 21 static const char twilio_To[] = "PHONE_NUMBER_TO" ;
wolfSSL 0:f0cddf702172 22 static const char twilio_Url[] = "http://twimlbin.com/TWIML_PATH" ;
wolfSSL 0:f0cddf702172 23
wolfSSL 0:f0cddf702172 24 static const char twilio_api[] = "https://api.twilio.com/2010-04-01/Accounts/%s/%s.%s" ;
wolfSSL 0:f0cddf702172 25 static const char twilio_Method[] = "GET" ;
wolfSSL 0:f0cddf702172 26 static const char twilio_FBMethod[] = "GET" ;
wolfSSL 0:f0cddf702172 27 static const char twilio_StatusCBM[]= "GET" ;
wolfSSL 0:f0cddf702172 28 static const char twilio_Record[] = "false" ;
wolfSSL 0:f0cddf702172 29
wolfSSL 0:f0cddf702172 30 static char twilio_request[] = "Calls" ;
wolfSSL 0:f0cddf702172 31 static char twilio_twiML[] = "xml" ;
wolfSSL 0:f0cddf702172 32
wolfSSL 0:f0cddf702172 33 static char uri[
wolfSSL 0:f0cddf702172 34 sizeof(twilio_AccountSid)
wolfSSL 0:f0cddf702172 35 +sizeof(twilio_AuthToken)
wolfSSL 0:f0cddf702172 36 +sizeof(twilio_api)
wolfSSL 0:f0cddf702172 37 +SAFIX+ALLOWANCE] ;
wolfSSL 0:f0cddf702172 38 static char HeaderLines[] =
wolfSSL 0:f0cddf702172 39 "User-Agent: curl/7.33.0\n"
wolfSSL 0:f0cddf702172 40 "Host: api.twilio.com\n"
wolfSSL 0:f0cddf702172 41 "Accept: */*\n" ;
wolfSSL 0:f0cddf702172 42
wolfSSL 0:f0cddf702172 43 //POST data
wolfSSL 0:f0cddf702172 44 HTTPMap params;
wolfSSL 0:f0cddf702172 45 HTTPText inText(str, 1500);
wolfSSL 0:f0cddf702172 46
wolfSSL 0:f0cddf702172 47 params.put("From", twilio_From);
wolfSSL 0:f0cddf702172 48 params.put("To", twilio_To);
wolfSSL 0:f0cddf702172 49 params.put("Url", twilio_Url);
wolfSSL 0:f0cddf702172 50 params.put("Method", twilio_Method);
wolfSSL 0:f0cddf702172 51 params.put("FaulbackMethod", twilio_FBMethod);
wolfSSL 0:f0cddf702172 52 params.put("StatusCallbackMethod", twilio_StatusCBM);
wolfSSL 0:f0cddf702172 53 params.put("Record", twilio_Record);
wolfSSL 0:f0cddf702172 54
wolfSSL 0:f0cddf702172 55 printf("\nTrying to call %s\n", twilio_To);
wolfSSL 0:f0cddf702172 56 sprintf(uri, twilio_api, twilio_AccountSid, twilio_request, twilio_twiML) ;
wolfSSL 0:f0cddf702172 57 printf("uri=%s\n", uri) ;
wolfSSL 0:f0cddf702172 58
wolfSSL 0:f0cddf702172 59 http.basicAuth(twilio_AccountSid, twilio_AuthToken);
wolfSSL 0:f0cddf702172 60 http.setHeader(HeaderLines) ;
wolfSSL 0:f0cddf702172 61 http.setSSLversion(1) ; /* TLSv1.0 */
wolfSSL 0:f0cddf702172 62
wolfSSL 0:f0cddf702172 63 ret = http.post(uri, params, &inText);
wolfSSL 0:f0cddf702172 64 if (!ret) {
wolfSSL 0:f0cddf702172 65 printf("Executed POST successfully - read %d characters\n", strlen(str));
wolfSSL 0:f0cddf702172 66 printf("Result: %s\n", str);
wolfSSL 0:f0cddf702172 67 } else {
wolfSSL 0:f0cddf702172 68 printf("Error - ret = %d - HTTP return code = %d\n", ret, http.getHTTPResponseCode());
wolfSSL 0:f0cddf702172 69 }
wolfSSL 0:f0cddf702172 70 eth.disconnect();
wolfSSL 0:f0cddf702172 71
wolfSSL 0:f0cddf702172 72 }
wolfSSL 0:f0cddf702172 73
wolfSSL 0:f0cddf702172 74 int main() {
wolfSSL 0:f0cddf702172 75 int ret ;
wolfSSL 0:f0cddf702172 76 int av ;
wolfSSL 0:f0cddf702172 77
wolfSSL 0:f0cddf702172 78 EthernetInterface eth;
wolfSSL 0:f0cddf702172 79
wolfSSL 0:f0cddf702172 80 printf("Twilio Client Starting,...\n") ;
wolfSSL 0:f0cddf702172 81
wolfSSL 0:f0cddf702172 82 ret = eth.init(); //Use DHCP
wolfSSL 0:f0cddf702172 83 while(1) {
wolfSSL 0:f0cddf702172 84 ret = eth.connect();
wolfSSL 0:f0cddf702172 85 if(ret == 0)break ;
wolfSSL 0:f0cddf702172 86 Thread::wait(100);
wolfSSL 0:f0cddf702172 87 }
wolfSSL 0:f0cddf702172 88 printf("IP = %s\n", eth.getIPAddress());
wolfSSL 0:f0cddf702172 89
wolfSSL 0:f0cddf702172 90 #define BOARD_FRDM_K64F
wolfSSL 0:f0cddf702172 91 #ifdef BOARD_FRDM_K64F
wolfSSL 0:f0cddf702172 92 #define STACK_SIZE 10000
wolfSSL 0:f0cddf702172 93 Thread t(twilio_main, NULL, osPriorityNormal, STACK_SIZE);
wolfSSL 0:f0cddf702172 94 #else
wolfSSL 0:f0cddf702172 95 twilio_main(&av) ;
wolfSSL 0:f0cddf702172 96 #endif
wolfSSL 0:f0cddf702172 97
wolfSSL 0:f0cddf702172 98 while (true) {
wolfSSL 0:f0cddf702172 99 Thread::wait(1000);
wolfSSL 0:f0cddf702172 100 }
wolfSSL 0:f0cddf702172 101 }