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.
irc.h@0:b8fb2df56652, 2014-08-02 (annotated)
- Committer:
- NickRyder
- Date:
- Sat Aug 02 12:09:10 2014 +0000
- Revision:
- 0:b8fb2df56652
Moved irc and handlers into IrcBot library.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
NickRyder | 0:b8fb2df56652 | 1 | #ifndef __mbed_irc_h__ |
NickRyder | 0:b8fb2df56652 | 2 | #define __mbed_irc_h__ |
NickRyder | 0:b8fb2df56652 | 3 | |
NickRyder | 0:b8fb2df56652 | 4 | #include "mbed.h" |
NickRyder | 0:b8fb2df56652 | 5 | #include "EthernetInterface.h" |
NickRyder | 0:b8fb2df56652 | 6 | #include <vector> |
NickRyder | 0:b8fb2df56652 | 7 | |
NickRyder | 0:b8fb2df56652 | 8 | class IrcMessage { |
NickRyder | 0:b8fb2df56652 | 9 | public: |
NickRyder | 0:b8fb2df56652 | 10 | IrcMessage(); |
NickRyder | 0:b8fb2df56652 | 11 | IrcMessage(char *, char *, char *); |
NickRyder | 0:b8fb2df56652 | 12 | char from[32], to[32], msg[256]; |
NickRyder | 0:b8fb2df56652 | 13 | }; |
NickRyder | 0:b8fb2df56652 | 14 | |
NickRyder | 0:b8fb2df56652 | 15 | class MessageHandler { |
NickRyder | 0:b8fb2df56652 | 16 | public: |
NickRyder | 0:b8fb2df56652 | 17 | MessageHandler() {}; |
NickRyder | 0:b8fb2df56652 | 18 | virtual IrcMessage handle(IrcMessage msg) {return IrcMessage();} |
NickRyder | 0:b8fb2df56652 | 19 | }; |
NickRyder | 0:b8fb2df56652 | 20 | |
NickRyder | 0:b8fb2df56652 | 21 | class Irc { |
NickRyder | 0:b8fb2df56652 | 22 | public: |
NickRyder | 0:b8fb2df56652 | 23 | Irc(char *, char *, int, char *); |
NickRyder | 0:b8fb2df56652 | 24 | void connect(); |
NickRyder | 0:b8fb2df56652 | 25 | void disconnect(); |
NickRyder | 0:b8fb2df56652 | 26 | void add(MessageHandler *); |
NickRyder | 0:b8fb2df56652 | 27 | void identify(char *); |
NickRyder | 0:b8fb2df56652 | 28 | void join(char *); |
NickRyder | 0:b8fb2df56652 | 29 | bool read(); |
NickRyder | 0:b8fb2df56652 | 30 | private: |
NickRyder | 0:b8fb2df56652 | 31 | void handle(IrcMessage); |
NickRyder | 0:b8fb2df56652 | 32 | void parse(); |
NickRyder | 0:b8fb2df56652 | 33 | void send(char *); |
NickRyder | 0:b8fb2df56652 | 34 | Serial pc; |
NickRyder | 0:b8fb2df56652 | 35 | TCPSocketConnection sock; |
NickRyder | 0:b8fb2df56652 | 36 | char network[64]; |
NickRyder | 0:b8fb2df56652 | 37 | char channel[64]; |
NickRyder | 0:b8fb2df56652 | 38 | int port; |
NickRyder | 0:b8fb2df56652 | 39 | char nickname[64]; |
NickRyder | 0:b8fb2df56652 | 40 | char password[64]; |
NickRyder | 0:b8fb2df56652 | 41 | bool ident, connected, setup, joined; |
NickRyder | 0:b8fb2df56652 | 42 | char readbuffer[512]; |
NickRyder | 0:b8fb2df56652 | 43 | char parsebuffer[512]; |
NickRyder | 0:b8fb2df56652 | 44 | int parseindex; |
NickRyder | 0:b8fb2df56652 | 45 | vector<MessageHandler *> handlers; |
NickRyder | 0:b8fb2df56652 | 46 | }; |
NickRyder | 0:b8fb2df56652 | 47 | |
NickRyder | 0:b8fb2df56652 | 48 | #endif |