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.
IrcMessageHandlers.h@2:e4c74eb20586, 2014-08-02 (annotated)
- 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?
User | Revision | Line number | New 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 |