The IrcBot class can connect to a channel on an IRC network. Users on the same network can send messages to the bot that are parsed by message handlers. The included handlers read digital/analog inputs and write digital outputs or echo messages back to the command sender/channel. Users can write their own message handlers inheriting from the MessageHandler class to perform different actions.

Revision:
1:cf586c9bbb52
Parent:
0:b8fb2df56652
Child:
2:e4c74eb20586
--- a/handlers.cpp	Sat Aug 02 12:09:10 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,113 +0,0 @@
-#include "handlers.h"
-
-DigitalOutHandler::DigitalOutHandler(char * n, PinName p, bool v) :
-    pin(p), verbose(v)
-{
-    sprintf(name, "%s", n);
-    pin = 0;
-}
-
-IrcMessage DigitalOutHandler::handle(IrcMessage msg) {
-    IrcMessage reply;
-    if (verbose) {
-        if (msg.to[0] == '#') {
-            strcpy(reply.to, msg.to); 
-        } else {
-            strcpy(reply.to, msg.from);
-        }
-    }
-    char required[64];
-    sprintf(required, "WRITE %s", name);
-    char * c = NULL;
-    c = strstr(msg.msg, required);
-    if (c != NULL) {
-        c = strstr(msg.msg, "ON");
-        if (c != NULL) {
-            pin = 1;
-            if (verbose) {
-                sprintf(reply.msg, "SET %s ON", name);        
-            }
-        }
-        c = strstr(msg.msg, "OFF");
-        if (c != NULL) {
-            pin = 0;
-            if (verbose) {
-                sprintf(reply.msg, "SET %s OFF", name);
-            }
-        }
-    }
-    return reply;
-}
-
-DigitalInHandler::DigitalInHandler(char * n, PinName p) :
-    pin(p)
-{
-    sprintf(name, "%s", n);
-}
-
-IrcMessage DigitalInHandler::handle(IrcMessage msg) {
-    IrcMessage reply;
-    if (msg.to[0] == '#') {
-        strcpy(reply.to, msg.to); 
-    } else {
-        strcpy(reply.to, msg.from);
-    }
-    char required[64];
-    sprintf(required, "READ %s", name);
-    char * c = NULL;
-    c = strstr(msg.msg, required);
-    if (c != NULL) {
-        if (pin) {
-            sprintf(reply.msg, "%s is ON", name);
-        } else {
-            sprintf(reply.msg, "%s is OFF", name);
-        }
-    }
-    return reply;
-}
-
-AnalogInHandler::AnalogInHandler(char * n, PinName p) :
-    pin(p), scaleval(1.0)
-{
-    sprintf(name, "%s", n);
-    sprintf(unit, "");
-}
-
-void AnalogInHandler::scale(float s, char * u) {
-    scaleval = s;
-    sprintf(unit, "%s", u);
-}
-
-IrcMessage AnalogInHandler::handle(IrcMessage msg) {
-    IrcMessage reply;
-    if (msg.to[0] == '#') {
-        strcpy(reply.to, msg.to); 
-    } else {
-        strcpy(reply.to, msg.from);
-    }
-    char required[64];
-    sprintf(required, "READ %s", name);
-    char * c = NULL;
-    c = strstr(msg.msg, required);
-    if (c != NULL) {
-        float v = pin * scaleval;
-        sprintf(reply.msg, "%s = %f %s", name, v, unit);
-    }
-    return reply;
-}
-
-IrcMessage EchoHandler::handle(IrcMessage msg) {
-    IrcMessage reply;
-    char * c = NULL;
-    c = strstr(msg.msg, "ECHO ");
-    if (c != NULL) {
-        strcpy(reply.from, msg.to);
-        if (msg.to[0] == '#') {
-            strcpy(reply.to, msg.to);
-        } else {
-            strcpy(reply.to, msg.from);
-        }
-        strcpy(reply.msg, c + 5);
-    }        
-    return reply;
-}