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

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);
+}
+