Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Revision 2:e4c74eb20586, committed 2014-08-02
- Comitter:
 - NickRyder
 - Date:
 - Sat Aug 02 12:57:57 2014 +0000
 - Parent:
 - 1:cf586c9bbb52
 - Commit message:
 - Added documentation.
 
Changed in this revision
--- a/IrcBot.cpp	Sat Aug 02 12:17:28 2014 +0000
+++ b/IrcBot.cpp	Sat Aug 02 12:57:57 2014 +0000
@@ -12,7 +12,7 @@
     msg[0] = '\0';
 }
 
-Irc::Irc(char * nick, char * net, int p, char * chan) :
+IrcBot::IrcBot(char * nick, char * net, int p, char * chan) :
         pc(USBTX, USBRX), sock(), port(p), ident(false), connected(false),
         setup(false), joined(false), parseindex(0)
 {
@@ -20,28 +20,17 @@
     sprintf(password, "%s", "");
     sprintf(network, "%s", net);
     sprintf(channel, "%s", chan);
-    pc.printf("Created Irc obj for %s.\n", nickname);
-}
-
-void Irc::identify(char * pass) {
-    ident = true;
-    sprintf(password, "%s", pass);    
+    pc.printf("Created IrcBot obj for %s.\n", nickname);
 }
 
-void Irc::join(char * chan) {
-    char cmd[64];
-    sprintf(cmd, ":source JOIN :%s\r\n", chan);
-    send(cmd);
-}
-
-void Irc::connect() {
+void IrcBot::connect() {
     pc.printf("Connecting to %s:%d...\n", network, port);
     sock.connect(network, port);
     pc.printf("Done.\n");
     connected = true;
 }
 
-void Irc::disconnect() {
+void IrcBot::disconnect() {
     if (connected) {
         pc.printf("Disconnecting.\n");
         sock.close();
@@ -49,11 +38,11 @@
     }
 }
 
-void Irc::add(MessageHandler * handler) {
+void IrcBot::add(MessageHandler * handler) {
     handlers.push_back(handler);
 }
 
-bool Irc::read() {
+bool IrcBot::read() {
     if (!connected) return 0;
     int ret = sock.receive(readbuffer, sizeof(readbuffer) - 1);
     bool parsed = false;
@@ -74,7 +63,7 @@
     return parsed;
 }
 
-void Irc::send(char * cmd) {
+void IrcBot::send(char * cmd) {
     if (!connected) return;
     int i = 0;
     bool ok = true;
@@ -90,7 +79,7 @@
     sock.send_all(cmd, i);
 }
 
-void Irc::handle(IrcMessage msg) {
+void IrcBot::handle(IrcMessage msg) {
     pc.printf("Handling message from %s, to %s: %s\n", msg.from, msg.to, msg.msg);    
     for (int i = 0; i < handlers.size(); i++) {
         IrcMessage out = handlers.at(i)->handle(msg);
@@ -104,7 +93,7 @@
     }
 }
 
-void Irc::parse() {
+void IrcBot::parse() {
     pc.printf("Parsing: --%s--\n", parsebuffer);
     if (setup && (!joined)) {
         char cmd[256];
--- a/IrcBot.h	Sat Aug 02 12:17:28 2014 +0000
+++ b/IrcBot.h	Sat Aug 02 12:57:57 2014 +0000
@@ -5,27 +5,62 @@
 #include "EthernetInterface.h"
 #include <vector>
 
+/** 
+ * IrcBot responds to commands on IRC using message users' handlers
+ */ 
 class IrcMessage {
     public:
+        /** Create empty IrcMessage */
         IrcMessage();
-        IrcMessage(char *, char *, char *);    
+        
+        /** Create an IrcMessage
+         * @param from The user sending the message.
+         * @param to The user/channel receiving the message.
+         * @param message The message.
+         */ 
+        IrcMessage(char * from, char * to, char * message);    
         char from[32], to[32], msg[256];
 };
 
+/**
+ * Base MessageHandler class.
+ * Users should write classes inheriting from MessageHandler to parse and 
+ * respond to incoming IRC messages.
+ */
 class MessageHandler {
     public:
         MessageHandler() {};
         virtual IrcMessage handle(IrcMessage msg) {return IrcMessage();}
 };
 
-class Irc {
+/**
+ * IrcBot connects to an IRC network and joins a channel. Users can add message
+ * handlers which parse incoming private messages and respond to them.
+ */
+class IrcBot {
     public:
-        Irc(char *, char *, int, char *);
+        /** Create an IrcBot
+         *
+         * @param nickname Bot's nickname
+         * @param network IRC network to join
+         * @param port Port to connect to network on
+         * @param channel Channel to connect to
+         */
+        IrcBot(char * nickname, char * network, int port, char * channel);
+        /** Connect to the network. 
+         *
+         * Users should have already created a network interface 
+         * (Ethernet/Wifi/3G/whatever) to carry the connection.
+         */ 
         void connect();
+        /// Disconnect from the network.
         void disconnect();
+        /// Add a handler for incoming messages.
         void add(MessageHandler *);
-        void identify(char *);
-        void join(char *);
+        
+        /** Read data from internet connection, parse input and handle any
+         * incoming private messages
+         */
         bool read();
     private:
         void handle(IrcMessage);
--- a/IrcMessageHandlers.h	Sat Aug 02 12:17:28 2014 +0000
+++ b/IrcMessageHandlers.h	Sat Aug 02 12:57:57 2014 +0000
@@ -2,9 +2,16 @@
 #define __mbed_irc_handlers_h__
 #include "IrcBot.h"
 
+///  DigitalOutHandler lets users control a DigitalOut using "WRITE <name> ON/OFF"
 class DigitalOutHandler : private MessageHandler {
     public:
-        DigitalOutHandler(char *, PinName, bool);
+        /** Create a DigitalOutHandler
+         * @param name Name of output used in command on IRC
+         * @param pin Pin the output is connected to.
+         * @param verbose Whether or not a reply is sent to IRC confirming the output state
+         */
+        DigitalOutHandler(char * name, PinName pin, bool verbose);
+        /// Set output pin on or off, reply "SET <name> ON/OFF" if verbose.
         IrcMessage handle(IrcMessage);
     private:
         DigitalOut pin;
@@ -12,19 +19,35 @@
         bool verbose;
 };
 
+///  DigitalInHandler lets users read a DigitalIn using "READ <name>"
 class DigitalInHandler : private MessageHandler {
     public:
-        DigitalInHandler(char *, PinName);
+        /** Create a DigitalInHandler
+         * @param name Name of input used in command on IRC
+         * @param pin Pin the input is connected to.
+         */
+        DigitalInHandler(char * name, PinName pin);
+        /// Reply "<name> IS ON/OFF"
         IrcMessage handle(IrcMessage);
     private:
         DigitalIn pin;
         char name[32];
 };
 
+///  AnalogInHandler lets users read a DigitalIn using "READ <name>"
 class AnalogInHandler : private MessageHandler {
     public:
-        AnalogInHandler(char *, PinName);
-        void scale(float, char *);
+        /** Create an AnalogInHandler
+         * @param name Name of input used in command on IRC
+         * @param pin Pin the input is connected to.
+         */
+        AnalogInHandler(char * name, PinName pin);
+        /** Define a scaling factor for the measured value [0.0 - 1.0]
+         * @param scale The scaling factor
+         * @param unit The units used in the message to IRC
+         */
+        void scale(float scale, char * unit);
+        /// Measure input, scale and reply "<name> = <value> <units>"
         IrcMessage handle(IrcMessage);
     private:
         AnalogIn pin;
@@ -33,9 +56,11 @@
         float scaleval;
 };
 
+/// A handler to echo back any messages of the form "ECHO <x>"
 class EchoHandler : private MessageHandler {
     public:
         EchoHandler(){};
+        /// Reply to "ECHO <x>" with "<x>"
         IrcMessage handle(IrcMessage msg);
 };