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.

Committer:
NickRyder
Date:
Sat Aug 02 12:57:57 2014 +0000
Revision:
2:e4c74eb20586
Parent:
1:cf586c9bbb52
Added documentation.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
NickRyder 1:cf586c9bbb52 1 #ifndef __mbed_irc_handlers_h__
NickRyder 1:cf586c9bbb52 2 #define __mbed_irc_handlers_h__
NickRyder 1:cf586c9bbb52 3 #include "IrcBot.h"
NickRyder 1:cf586c9bbb52 4
NickRyder 2:e4c74eb20586 5 /// DigitalOutHandler lets users control a DigitalOut using "WRITE <name> ON/OFF"
NickRyder 1:cf586c9bbb52 6 class DigitalOutHandler : private MessageHandler {
NickRyder 1:cf586c9bbb52 7 public:
NickRyder 2:e4c74eb20586 8 /** Create a DigitalOutHandler
NickRyder 2:e4c74eb20586 9 * @param name Name of output used in command on IRC
NickRyder 2:e4c74eb20586 10 * @param pin Pin the output is connected to.
NickRyder 2:e4c74eb20586 11 * @param verbose Whether or not a reply is sent to IRC confirming the output state
NickRyder 2:e4c74eb20586 12 */
NickRyder 2:e4c74eb20586 13 DigitalOutHandler(char * name, PinName pin, bool verbose);
NickRyder 2:e4c74eb20586 14 /// Set output pin on or off, reply "SET <name> ON/OFF" if verbose.
NickRyder 1:cf586c9bbb52 15 IrcMessage handle(IrcMessage);
NickRyder 1:cf586c9bbb52 16 private:
NickRyder 1:cf586c9bbb52 17 DigitalOut pin;
NickRyder 1:cf586c9bbb52 18 char name[32];
NickRyder 1:cf586c9bbb52 19 bool verbose;
NickRyder 1:cf586c9bbb52 20 };
NickRyder 1:cf586c9bbb52 21
NickRyder 2:e4c74eb20586 22 /// DigitalInHandler lets users read a DigitalIn using "READ <name>"
NickRyder 1:cf586c9bbb52 23 class DigitalInHandler : private MessageHandler {
NickRyder 1:cf586c9bbb52 24 public:
NickRyder 2:e4c74eb20586 25 /** Create a DigitalInHandler
NickRyder 2:e4c74eb20586 26 * @param name Name of input used in command on IRC
NickRyder 2:e4c74eb20586 27 * @param pin Pin the input is connected to.
NickRyder 2:e4c74eb20586 28 */
NickRyder 2:e4c74eb20586 29 DigitalInHandler(char * name, PinName pin);
NickRyder 2:e4c74eb20586 30 /// Reply "<name> IS ON/OFF"
NickRyder 1:cf586c9bbb52 31 IrcMessage handle(IrcMessage);
NickRyder 1:cf586c9bbb52 32 private:
NickRyder 1:cf586c9bbb52 33 DigitalIn pin;
NickRyder 1:cf586c9bbb52 34 char name[32];
NickRyder 1:cf586c9bbb52 35 };
NickRyder 1:cf586c9bbb52 36
NickRyder 2:e4c74eb20586 37 /// AnalogInHandler lets users read a DigitalIn using "READ <name>"
NickRyder 1:cf586c9bbb52 38 class AnalogInHandler : private MessageHandler {
NickRyder 1:cf586c9bbb52 39 public:
NickRyder 2:e4c74eb20586 40 /** Create an AnalogInHandler
NickRyder 2:e4c74eb20586 41 * @param name Name of input used in command on IRC
NickRyder 2:e4c74eb20586 42 * @param pin Pin the input is connected to.
NickRyder 2:e4c74eb20586 43 */
NickRyder 2:e4c74eb20586 44 AnalogInHandler(char * name, PinName pin);
NickRyder 2:e4c74eb20586 45 /** Define a scaling factor for the measured value [0.0 - 1.0]
NickRyder 2:e4c74eb20586 46 * @param scale The scaling factor
NickRyder 2:e4c74eb20586 47 * @param unit The units used in the message to IRC
NickRyder 2:e4c74eb20586 48 */
NickRyder 2:e4c74eb20586 49 void scale(float scale, char * unit);
NickRyder 2:e4c74eb20586 50 /// Measure input, scale and reply "<name> = <value> <units>"
NickRyder 1:cf586c9bbb52 51 IrcMessage handle(IrcMessage);
NickRyder 1:cf586c9bbb52 52 private:
NickRyder 1:cf586c9bbb52 53 AnalogIn pin;
NickRyder 1:cf586c9bbb52 54 char name[32];
NickRyder 1:cf586c9bbb52 55 char unit[32];
NickRyder 1:cf586c9bbb52 56 float scaleval;
NickRyder 1:cf586c9bbb52 57 };
NickRyder 1:cf586c9bbb52 58
NickRyder 2:e4c74eb20586 59 /// A handler to echo back any messages of the form "ECHO <x>"
NickRyder 1:cf586c9bbb52 60 class EchoHandler : private MessageHandler {
NickRyder 1:cf586c9bbb52 61 public:
NickRyder 1:cf586c9bbb52 62 EchoHandler(){};
NickRyder 2:e4c74eb20586 63 /// Reply to "ECHO <x>" with "<x>"
NickRyder 1:cf586c9bbb52 64 IrcMessage handle(IrcMessage msg);
NickRyder 1:cf586c9bbb52 65 };
NickRyder 1:cf586c9bbb52 66
NickRyder 1:cf586c9bbb52 67 #endif