This is made by seminal03_SIT_mechanical_engineering. This quotes ban4jp"CyaSSL_Twitter-OAuth4Tw".

Dependencies:   EthernetInterface HTTPClient-wolfSSL NTPClient OAuth4Tw mbed-rtos mbed wolfSSL

Fork of CyaSSL-Twitter-OAuth4Tw by ban4jp -

main.cpp

Committer:
mbed2015
Date:
2016-02-04
Revision:
7:48019055e3a3
Parent:
6:f5189d4f109f

File content as of revision 7:48019055e3a3:

// Original: https://developer.mbed.org/users/ban4jp/code/CyaSSL-Twitter-OAuth4Tw/

#include <string.h>
#include "mbed.h"
#include "EthernetInterface.h"
#include "NTPClient.h"
#include "OAuth4Tw.h"
#include "lwip/dns.h"


Serial pc(USBTX, USBRX);
DigitalOut myled(LED1);
EthernetInterface eth;
NTPClient ntp;

OAuth4Tw oa4t("f3fcA4S61FcOz0VMLgia9ewn2",// Consumer key
              "Djaz2ooEf95b8yr3yE7DWS1XrYuwjBYZdz7QqnDKFTKNdMd8Ml", // Consumer secret
              "4044135739-da2aYe6fs6aCcpCKlqagVxM3rjDj5yPUaJaZ7O7", // Access token
              "uIrtt88FWWIz2yqpU9AkBeoLEHW5ls5ZdA9SoQvcGY47c");// Access token secret



#if defined(TARGET_LPC1768)
#define RESPONSE_BUFFER_SIZE 512
#elif defined(TARGET_K64F) || defined(TARGET_LPC4088)
#define RESPONSE_BUFFER_SIZE 4096
#else
#error not tested platform.
#endif

char response_buffer[RESPONSE_BUFFER_SIZE];
HTTPText response(response_buffer, sizeof(response_buffer));

// prototype
void updateTime();
void example_tweet1();
void example_tweet2();
void example_tweet3();
void example_getUserData();
void mm2(void);

Ticker mmTicker;
volatile int sum = 0;    

int main()
{
    pc.baud(115200);

    eth.init();
    // eth.init("172.20.29.40","255.255.255.0","172.20.29.1");
    // printf("Initialized, MAC: %s\n", eth.getMACAddress());

    // ip_addr_t primaryDnsServer;
    // ip4_addr_set_u32(&primaryDnsServer, ipaddr_addr("202.18.66.8")); 
    // dns_setserver(0, &primaryDnsServer);

    int ret;
    while ((ret = eth.connect()) != 0) {
        printf("Error eth.connect() - ret = %d\n", ret);
    }

    printf("Connected, IP: %s, MASK: %s, GW: %s\n",
           eth.getIPAddress(), eth.getNetworkMask(), eth.getGateway());

    // requires accurate time, for OAuth Authorization.
    updateTime();


//    example_getUserData();
//        printf("\n");
    
    myled = 0;
    time_t ctTime;
        struct tm* lTime;
        int hour;
        int countmin = 0;

    
/*tickerオブジェクトで0.1秒ごとにmm2関数を呼び出す*/
    mmTicker.attach(&mm2, 0.5);     

    while (1) {
        time(&ctTime);
        lTime = localtime(&ctTime);
        hour = lTime->tm_hour;
        countmin = 5;
        if (12<=hour&&hour<=13) {
         countmin=15;
         }
    

        // Wait 60*5 seconds for next time.
        for (int t=0; t<60*countmin; t++) {
            myled = !myled;
            wait_ms(1000);
            printf("%d\n", sum);            
            //time(&ctTime);
            //lTime = localtime(&ctTime);
            //hour = lTime->tm_hour;
            //if (12<=hour&&hour<=13) break;
        }
        example_tweet2();
    }
    // mmTicker.detach();
}


void updateTime()
{
    printf("Trying to update time...\n");

    time_t ctTime;
    NTPResult result;

    while (1) {
        result = ntp.setTime("ntp.nict.jp");

        if (result == NTP_OK) {
            time(&ctTime);
            printf("Time is set to (UTC): %s\n", ctime(&ctTime));
            break;
        }

        switch (result) {
            case NTP_CONN:      ///<Connection error
                printf("Connection error\n");
                break;
            case NTP_TIMEOUT:   ///<Connection timeout
                printf("Connection timeout\n");
                break;
            case NTP_PRTCL:     ///<Protocol error
                printf("Protocol error\n");
                break;
            case NTP_DNS:       ///<Could not resolve name
                printf("Could not resolve name\n");
                break;
            default:
                printf("Error result=%d\n", result);
                break;
        }

        wait(5);
    }
}



/*センサ安定時間*/
#define INIT 30.0
/*ノイズ検出用*/
#define NOISE 0.1
/*センサ再読み取り時間*/
#define DELAY 0.05

DigitalIn pA(p19);
DigitalIn pB(p20);
DigitalOut led2(LED2);

void mm2(void)
{
    int nA = pA;
    int nB = pB;
    static int prevA = 0;
    static int prevB = 0;
    
    int status = 0;
    static int prevUpStatus = 0;

    if (prevA == nA)
        status = nA;
    if (prevB == nB)
        status |= (nB << 1);
    if (prevUpStatus == 0x03) {
        if (status == 0x02)
            sum++;
        else if (status == 0x01)
            sum--;
    }
        
    prevA = nA;
    prevB = nB;

    if (status)
        prevUpStatus = status;
}


void mm(void) {
    int a = 0;
    int b = 0;
    int c = 0;
    int d = 0;    
    int plus = 0;
    int minus = 0;
    led2 = 0;

//    pc.printf("a=%d b=%d c=%d d=%d\n",a,b,c,d);
   
            if(pA){
                wait(NOISE);
                if(pA){ 
                    a ++;
//                    pc.printf("a=%d\n",a);
                    wait(DELAY);
                    if(pB){
                        wait(NOISE);
                        if(pB){
                            b ++;
//                            pc.printf("b=%d\n",b);
                            wait(DELAY);
                            plus ++;
//                            pc.printf("plus=%d\n",plus);
                            }
                        }
                }
                wait(DELAY);
            }
            
            if(pB){
                wait(NOISE);
                if(pB){ 
                    c ++;
//                    pc.printf("c=%d\n",c);
                    wait(DELAY);
                    if(pA){
                        wait(NOISE);
                        if(pA){
                            d ++;
//                            pc.printf("d=%d\n",d);
                            wait(DELAY);
                            minus ++;
//                            pc.printf("minus=%d\n",minus);

                            }
                        }
                    }
                wait(DELAY);
                }         
        sum = plus - minus ;
//        pc.printf("sum=%d\n",sum);
}    

void example_tweet1()
{
    const char url[] = "https://api.twitter.com/1.1/statuses/update.json?status=Hello Everybody! Now, the number of people in the co-op - %s";
    char url2[128];


    time_t ctTime;

    time(&ctTime);

    snprintf(url2, sizeof(url2), url, ctime(&ctTime));

    HTTPResult result = oa4t.post(url2, &response);

    if (result == HTTP_OK) {
        printf("POST success.\n%s\n", response_buffer);
    } else {
        printf("POST error. (result = %d)\n", result);
    }
}

void example_tweet2(void)
{
    const char url[] = "https://api.twitter.com/1.1/statuses/update.json";
    wait(INIT);
    std::vector<std::string> post;
    post.reserve(1);

    char status[128];

    time_t ctTime;
    time(&ctTime);
    
    snprintf(status, sizeof(status), "status=Hello Everybody! Now, the number of people in the co-op - %d %s",sum, ctime(&ctTime));
    post.push_back(status);

    HTTPResult result = oa4t.post(url, &post, &response);

    if (result == HTTP_OK) {
        printf("POST success.\n%s\n", response_buffer);
    } else {
        printf("POST error. (result = %d)\n", result);
    }
}
/*
void example_tweet3()
{
    const char url[] = "https://api.twitter.com/1.1/statuses/update.json";

    std::vector<std::string> post;
    post.reserve(3);

    struct tm tmptr;
    char tmstr[34];
    char status[128];
    char location_lat[24];
    char location_long[24];

    time_t ctTime;
    time(&ctTime);
    ctTime += 9 * 60 * 60;  // Timezone: JST(+9h)
    localtime_r(&ctTime, &tmptr);

    // Tweets in Japanese
    strftime(tmstr, sizeof(tmstr), "%Y年%m月%d日 %H時%M分%S秒", &tmptr);
    snprintf(status, sizeof(status), "status=ハロー・ワールド! - %s", tmstr);
    post.push_back(status);

    // Option: add Location information
    snprintf(location_lat, sizeof(location_lat), "lat=%f", 35.359577);
    snprintf(location_long, sizeof(location_long), "long=%f", 138.731414);
    post.push_back(location_lat);
    post.push_back(location_long);

    HTTPResult result = oa4t.post(url, &post, &response);

    if (result == HTTP_OK) {
        printf("POST success.\n%s\n", response_buffer);
    } else {
        printf("POST error. (result = %d)\n", result);
    }
}
*/

void example_getUserData()
{
    const char url[] = "https://api.twitter.com/1.1/users/show.json"
                       "?screen_name=twitter";

    HTTPResult result = oa4t.get(url, &response);

    if (result == HTTP_OK) {
        printf("GET success.\n%s\n", response_buffer);
    } else {
        printf("GET error. (result = %d)\n", result);
    }
}