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
main.cpp@5:4d53cdfe94c4, 2015-08-05 (annotated)
- 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?
User | Revision | Line number | New 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&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 | } |