Modificacion de https://mbed.org/cookbook/RFID-Tweeter para soporte de un tag no enlistado y registro del mismo mediante twiter
Dependencies: EthernetNetIf HTTPClient_ToBeRemoved mbed
Diff: main.cpp
- Revision:
- 0:8df845fb13c7
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Sun Oct 28 04:49:16 2012 +0000 @@ -0,0 +1,149 @@ +// RFID Tweeter +/* + Update: 21-06-2010 + The basic authentication service for twitter is going down. + To continue using that program, the code has been updated to use http://supertweet.net which acts as an API proxy. + Simply visit the website to setup your twitter account for this API. + See: http://www.supertweet.net/about/documentation +*/ + +#include "mbed.h" +#include "ID12RFID.h" +#include "EthernetNetIf.h" +#include "HTTPClient.h" + +#include <stdio.h> +#include <stdlib.h> +#include <math.h> + +//#include <string.h> +// Function declarations +// typedef __w64 unsigned int size_t +//size_t strlen(const char *); +char *strrev(char *); +char *itoa(int, char *, int); + + + +#define TWITTER_USER "xxxx" +#define TWITTER_PASSWORD "xxxx" + +#define IDS_COUNT 4 +const int ids_list[IDS_COUNT] = {346432,340613,333651,123456}; +const char* names_list[IDS_COUNT] = {"Sophia Alava", "Angel Yaguana", "Nicolas Yaguana", "Ivan Sanchez"}; + +EthernetNetIf eth; +HTTPClient twitter; + +ID12RFID rfid(p27); +DigitalOut serching(LED1); +DigitalOut tag_present(LED2); +DigitalOut tweet_ok(LED4); + +int main() +{ + + + + printf("Init\n"); + printf("\r\nSetting up...\r\n"); + EthernetErr ethErr = eth.setup(); + if(ethErr) { + printf("Error %d in setup.\n", ethErr); + return -1; + } + printf("\r\nSetup OK\r\n"); + + while (1) { + + //printf("Serching Tag...\n"); + serching = !serching; + int id = 0; + int auth = 1; + if(rfid.readable()) { + id = rfid.read(); + tag_present = 1; + printf("Tag Serial is: %d\r\n",id); + //wait(5); + for (int i = 0; i < IDS_COUNT; i++) { + if (ids_list[i] == id) { + auth = 0; + HTTPMap msg; + msg["status"] = names_list[i]; + printf("Id: %s\r\n",names_list[i]); + msg["status"] += " Login ok!"; + printf("Mensaje HTTP: %s\n\r",msg["status"]); + twitter.basicAuth(TWITTER_USER, TWITTER_PASSWORD); + HTTPResult r = twitter.post("http://api.supertweet.net/1/statuses/update.xml", msg, NULL); + if ( r == HTTP_OK ) { + printf("Tweet sent with success!\n"); + } else { + printf("Problem during tweeting, return code %d\n", r); + } + } + } + if (auth) { + printf("Tag no found in list\r\n"); + HTTPMap msg; + msg["status"] = "Tag strange attempts to access!, Tag is: "; + int num = id; + char buf[5]; + // convert id to string [buf] + itoa(num, buf, 10); + // print our string + printf("ID tag strange: %s\n", buf); + msg["status"] += buf; + printf("Mensaje HTTP: %s\n\r",msg["status"]); + twitter.basicAuth(TWITTER_USER, TWITTER_PASSWORD); + HTTPResult r = twitter.post("http://api.supertweet.net/1/statuses/update.xml", msg, NULL); + if ( r == HTTP_OK ) { + printf("Tweet sent with success!\n"); + } else { + printf("Problem during tweeting, return code %d\n", r); + + } + auth = 1; + } + tag_present = 0; + id = 0; + } + } +} + +/* +size_t strlen(const char *string) { + const char *s; + s = string; + while (*s) + s++; + return s - string; +} +*/ + +char *strrev(char *str) { + char *p1, *p2; + if (!str || !*str) + return str; + for (p1 = str, p2 = str + strlen(str) - 1; p2 > p1; ++p1, --p2) { + *p1 ^= *p2; + *p2 ^= *p1; + *p1 ^= *p2; + } + return str; +} + +char *itoa(int n, char *s, int b) { + static char digits[] = "0123456789abcdefghijklmnopqrstuvwxyz"; + int i=0, sign; + + if ((sign = n) < 0) + n = -n; + do { + s[i++] = digits[n % b]; + } while ((n /= b) > 0); + if (sign < 0) + s[i++] = '-'; + s[i] = '\0'; + return strrev(s); +} +