Tweeting with mbed! (using SuperTweet)

Dependencies:   EthernetNetIf NTPClient_NetServices TextLCD mbed

Committer:
kagamikan
Date:
Tue Jun 14 09:25:04 2011 +0000
Revision:
1:5f287a9e95c8
Parent:
0:2e771f40cf84
add NTP time setting (contributed by T.Myojo)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kagamikan 0:2e771f40cf84 1 /*
kagamikan 0:2e771f40cf84 2 * UDENOKAI #5 SAMPLE PROGRAM: Tweeting with mbed!
kagamikan 0:2e771f40cf84 3 *
kagamikan 0:2e771f40cf84 4 * Using SuperTweet.Net API Proxy (setup required).
kagamikan 0:2e771f40cf84 5 * Based on cookbook/Twitter
kagamikan 0:2e771f40cf84 6 */
kagamikan 0:2e771f40cf84 7 #include "mbed.h"
kagamikan 0:2e771f40cf84 8 #include "EthernetNetIf.h"
kagamikan 0:2e771f40cf84 9 #include "HTTPClient.h"
kagamikan 1:5f287a9e95c8 10 #include "NTPClient.h"
kagamikan 1:5f287a9e95c8 11 #include "TextLCD.h"
kagamikan 0:2e771f40cf84 12
kagamikan 0:2e771f40cf84 13 Serial pc(USBTX, USBRX); // tx, rx
kagamikan 0:2e771f40cf84 14 TextLCD lcd(p24, p26, p27, p28, p29, p30); // rs, e, d4-d7
kagamikan 0:2e771f40cf84 15 EthernetNetIf eth;
kagamikan 1:5f287a9e95c8 16 NTPClient ntp;
kagamikan 0:2e771f40cf84 17
kagamikan 0:2e771f40cf84 18 int main() {
kagamikan 1:5f287a9e95c8 19
kagamikan 1:5f287a9e95c8 20 // Tweet informations
kagamikan 0:2e771f40cf84 21 char message[64], name[32], twID[32], twPW[32];
kagamikan 0:2e771f40cf84 22 sprintf(message, "hogehogefugafuga");
kagamikan 1:5f287a9e95c8 23 sprintf(name, "hoge"); // ex) @kagamikan
kagamikan 1:5f287a9e95c8 24 sprintf(twID, "fuga"); // ex) udenokai
kagamikan 1:5f287a9e95c8 25 sprintf(twPW, "piyo"); // ex) hoge
kagamikan 0:2e771f40cf84 26
kagamikan 1:5f287a9e95c8 27 // Setup IP Network
kagamikan 0:2e771f40cf84 28 pc.printf("\r\nSetting up...\r\n");
kagamikan 0:2e771f40cf84 29 lcd.printf("Setting up...");
kagamikan 0:2e771f40cf84 30 EthernetErr ethErr = eth.setup();
kagamikan 0:2e771f40cf84 31 if(ethErr) {
kagamikan 0:2e771f40cf84 32 printf("Error %d in setup.\n", ethErr);
kagamikan 0:2e771f40cf84 33 lcd.printf("\nError %d in setup.", ethErr);
kagamikan 0:2e771f40cf84 34 return -1;
kagamikan 0:2e771f40cf84 35 }
kagamikan 0:2e771f40cf84 36 IpAddr ip = eth.getIp();
kagamikan 0:2e771f40cf84 37 pc.printf("\r\nSetup OK\r\n");
kagamikan 0:2e771f40cf84 38 lcd.cls();
kagamikan 0:2e771f40cf84 39 lcd.printf("IP Address:\n%d.%d.%d.%d", ip[0], ip[1], ip[2], ip[3]);
kagamikan 0:2e771f40cf84 40
kagamikan 1:5f287a9e95c8 41 // Setting time with NTP
kagamikan 1:5f287a9e95c8 42 Host server(IpAddr(), 123, "ntp.nict.jp");
kagamikan 1:5f287a9e95c8 43 ntp.setTime(server);
kagamikan 1:5f287a9e95c8 44 time_t ctTime;
kagamikan 1:5f287a9e95c8 45 ctTime = time(NULL);
kagamikan 1:5f287a9e95c8 46 ctTime += 32400; //set jst time
kagamikan 1:5f287a9e95c8 47
kagamikan 1:5f287a9e95c8 48 // Building the tweet
kagamikan 0:2e771f40cf84 49 char tweet[128], ts[32];
kagamikan 1:5f287a9e95c8 50 strftime(ts, 32, "%I:%M %p\n", localtime(&ctTime));
kagamikan 1:5f287a9e95c8 51 sprintf(tweet, "%s (%s's mbed at %s JST) #udenokai", message, name, ts);
kagamikan 1:5f287a9e95c8 52 pc.printf(tweet);
kagamikan 0:2e771f40cf84 53
kagamikan 1:5f287a9e95c8 54 // Sending the tweet
kagamikan 1:5f287a9e95c8 55 HTTPClient twitter;
kagamikan 0:2e771f40cf84 56 HTTPMap msg;
kagamikan 0:2e771f40cf84 57 msg["status"] = tweet;
kagamikan 0:2e771f40cf84 58 twitter.basicAuth(twID, twPW);
kagamikan 0:2e771f40cf84 59 HTTPResult r = twitter.post("http://api.supertweet.net/1/statuses/update.xml", msg, NULL);
kagamikan 0:2e771f40cf84 60 if(r == HTTP_OK) {
kagamikan 0:2e771f40cf84 61 pc.printf("Tweet success!\n");
kagamikan 0:2e771f40cf84 62 lcd.cls();
kagamikan 0:2e771f40cf84 63 lcd.printf("\nTweet success!");
kagamikan 0:2e771f40cf84 64 } else {
kagamikan 0:2e771f40cf84 65 pc.printf("Tweet failed (Code:%d)\n", r);
kagamikan 0:2e771f40cf84 66 lcd.cls();
kagamikan 0:2e771f40cf84 67 lcd.printf("\nTweet failed (%d)", r);
kagamikan 0:2e771f40cf84 68 }
kagamikan 1:5f287a9e95c8 69
kagamikan 0:2e771f40cf84 70 return 0;
kagamikan 0:2e771f40cf84 71 }