This example codes uses the wolfssl library to get hastags from Twitter by using the FRDM-K64F board from Freescale

Dependencies:   EthernetInterface-FRDM HTTPClient mbed-rtos mbed wolfSSL WDT_K64F

Fork of SimpleHTTPSClient by wolf SSL

Committer:
lgarabo
Date:
Wed Aug 05 22:58:16 2015 +0000
Revision:
5:4d53cdfe94c4
Parent:
4:68c5a3f49a48
Child:
7:dceeeeca2741
This example code uses the wolfssl library to have the FRDM-K64F reading hashtags from twitter.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
wolfSSL 0:dadab10758d2 1 #include "mbed.h"
wolfSSL 0:dadab10758d2 2 #include "EthernetInterface.h"
wolfSSL 0:dadab10758d2 3 #include "HTTPClient.h"
wolfSSL 0:dadab10758d2 4
wolfSSL 0:dadab10758d2 5 EthernetInterface eth;
wolfSSL 0:dadab10758d2 6 HTTPClient http;
lgarabo 5:4d53cdfe94c4 7 DigitalOut led1(LED1);
lgarabo 5:4d53cdfe94c4 8
lgarabo 5:4d53cdfe94c4 9 char recvBuff[1024*40];
wolfSSL 0:dadab10758d2 10
wolfSSL 3:41412e91afb0 11 void getline(char *line, int size) {
wolfSSL 3:41412e91afb0 12 for(int i=0; i<size; i++) {
wolfSSL 3:41412e91afb0 13 if((line[i] = getchar()) == '\r') {
wolfSSL 3:41412e91afb0 14 line[i] = '\0' ;
wolfSSL 3:41412e91afb0 15 putchar('\n') ;
wolfSSL 3:41412e91afb0 16 break ;
wolfSSL 3:41412e91afb0 17 } else putchar(line[i]) ;
wolfSSL 3:41412e91afb0 18 }
wolfSSL 3:41412e91afb0 19 }
wolfSSL 3:41412e91afb0 20
lgarabo 5:4d53cdfe94c4 21 unsigned long long atoll(char *instr)
lgarabo 5:4d53cdfe94c4 22 {
lgarabo 5:4d53cdfe94c4 23 unsigned long long retval;
lgarabo 5:4d53cdfe94c4 24 //int i;
lgarabo 5:4d53cdfe94c4 25
lgarabo 5:4d53cdfe94c4 26 retval = 0;
lgarabo 5:4d53cdfe94c4 27 for (; *instr; instr++) {
lgarabo 5:4d53cdfe94c4 28 retval = 10*retval + (*instr - '0');
lgarabo 5:4d53cdfe94c4 29 }
lgarabo 5:4d53cdfe94c4 30 return retval;
lgarabo 5:4d53cdfe94c4 31 }
lgarabo 5:4d53cdfe94c4 32
lgarabo 5:4d53cdfe94c4 33 void baud(int baudrate) {
lgarabo 5:4d53cdfe94c4 34 Serial s(USBTX, USBRX);
lgarabo 5:4d53cdfe94c4 35 s.baud(baudrate);
lgarabo 5:4d53cdfe94c4 36 }
lgarabo 5:4d53cdfe94c4 37
wolfSSL 2:071a8275fa40 38 void net_main(void const *av)
wolfSSL 0:dadab10758d2 39 {
wolfSSL 0:dadab10758d2 40 int ret ;
lgarabo 5:4d53cdfe94c4 41 //char substr[10];
lgarabo 5:4d53cdfe94c4 42 char *found;
lgarabo 5:4d53cdfe94c4 43 char twitteTag[] = "data-time=";
lgarabo 5:4d53cdfe94c4 44 char createDate[11] = {0};
lgarabo 5:4d53cdfe94c4 45 unsigned long long dataTime = 0;
lgarabo 5:4d53cdfe94c4 46 unsigned long long lastdataTime = 1438467674;
wolfSSL 0:dadab10758d2 47
wolfSSL 0:dadab10758d2 48 eth.init(); //Use DHCP
lgarabo 5:4d53cdfe94c4 49
lgarabo 5:4d53cdfe94c4 50 printf("HTTPS Client, Starting,...\n\r") ;
wolfSSL 0:dadab10758d2 51 while(1) {
wolfSSL 0:dadab10758d2 52 if(eth.connect() == 0)break ;
wolfSSL 0:dadab10758d2 53 printf("Retry\n") ;
wolfSSL 0:dadab10758d2 54 }
lgarabo 5:4d53cdfe94c4 55
lgarabo 5:4d53cdfe94c4 56 while(1)
lgarabo 5:4d53cdfe94c4 57 {
lgarabo 5:4d53cdfe94c4 58 /*** HTTPS (SSL) ***/
lgarabo 5:4d53cdfe94c4 59 printf("\nFetching HTTPS\n\r");
lgarabo 5:4d53cdfe94c4 60 //ret = http.get("https://twitter.com/fsl_mcu.html", recvBuff, sizeof(recvBuff));
lgarabo 5:4d53cdfe94c4 61 ret = http.get("https://twitter.com/hashtag/tweetforacandy?f=tweets&amp;src=hash", recvBuff, sizeof(recvBuff),HTTP_CLIENT_DEFAULT_TIMEOUT);
lgarabo 5:4d53cdfe94c4 62 if (!ret) {
lgarabo 5:4d53cdfe94c4 63 printf("Result: %s\n\r", recvBuff);
lgarabo 5:4d53cdfe94c4 64 found = strstr(recvBuff, twitteTag);
lgarabo 5:4d53cdfe94c4 65 snprintf(createDate, sizeof (createDate), found+11);
lgarabo 5:4d53cdfe94c4 66 dataTime = atoll(createDate);
lgarabo 5:4d53cdfe94c4 67 printf("The data-time: %s\r\n", createDate);
lgarabo 5:4d53cdfe94c4 68
lgarabo 5:4d53cdfe94c4 69 if (lastdataTime < dataTime)
lgarabo 5:4d53cdfe94c4 70 {
lgarabo 5:4d53cdfe94c4 71 //Give the candy here!!
lgarabo 5:4d53cdfe94c4 72 led1 = 0;
lgarabo 5:4d53cdfe94c4 73 lastdataTime = dataTime;
lgarabo 5:4d53cdfe94c4 74 wait(1);
lgarabo 5:4d53cdfe94c4 75 led1 = 1;
lgarabo 5:4d53cdfe94c4 76 }
lgarabo 5:4d53cdfe94c4 77 } else {
lgarabo 5:4d53cdfe94c4 78 printf("Error - ret = %d - HTTP return code = %d\n\r", ret, http.getHTTPResponseCode());
lgarabo 5:4d53cdfe94c4 79 }
lgarabo 5:4d53cdfe94c4 80 wait(30);
wolfSSL 0:dadab10758d2 81 }
wolfSSL 0:dadab10758d2 82 eth.disconnect();
wolfSSL 2:071a8275fa40 83 }
wolfSSL 2:071a8275fa40 84
wolfSSL 2:071a8275fa40 85 main()
wolfSSL 2:071a8275fa40 86 {
lgarabo 5:4d53cdfe94c4 87 led1 = 1;
lgarabo 5:4d53cdfe94c4 88 baud (115200);
lgarabo 5:4d53cdfe94c4 89
wolfSSL 2:071a8275fa40 90 #define STACK_SIZE 20000
lgarabo 5:4d53cdfe94c4 91 Thread t(net_main, NULL, osPriorityNormal, STACK_SIZE);
wolfSSL 2:071a8275fa40 92 while (true) {
lgarabo 5:4d53cdfe94c4 93 Thread::wait(2000);
wolfSSL 2:071a8275fa40 94 }
wolfSSL 3:41412e91afb0 95 }