sabme ua / mail-driven-task

Dependents:   mail_driven_task_example

Revision:
2:b12e4c1338db
Parent:
1:381a6f6263c7
Child:
3:0c93bdf73d87
--- a/Task.h	Thu Dec 25 01:58:14 2014 +0000
+++ b/Task.h	Thu Dec 25 02:32:12 2014 +0000
@@ -8,6 +8,7 @@
 
 using namespace std;
 
+/** Log level symbol definition */
 typedef enum {
     LOG_DEBUG = 0,
     LOG_INFO,
@@ -15,13 +16,17 @@
     LOG_ERR
 } LogLevel;
 
+/** max length of mail queue block per task */
 #define MAX_MAIL_NUM 16
+
+/** max length of log string */
 #define LOG_BUF_SIZE 64
 
 typedef void (*Routine)(void const *argument);
 typedef uint32_t MessageID;
 typedef uint32_t TaskID;
 
+/** struct for static task configuration */
 struct TaskConfig {
     TaskConfig(
         const char *task_name,
@@ -43,6 +48,7 @@
     unsigned char *stackPointer;
 };
 
+/** struct for mail event passing */
 struct MailPacket {
     uint32_t messageId;
     void *packet;
@@ -50,21 +56,23 @@
 
 typedef Mail<MailPacket, MAX_MAIL_NUM> MailBox;
 
-class Task {
+/** Task class : A Thread which driven by mail event, and it have own logger. */
+class Task
+{
 public:
     /** Initialize task config table.
-      @param cfg array of TaskConfig
-      @param num_of_task length of cfg
-      @return void
-    */
+     * @param cfg array of TaskConfig
+     * @param num_of_task length of cfg
+     * @return void
+     */
     static void init(TaskConfig *config, uint32_t num_of_task);
 
     /** Send mail to task specified by task_id with Any data.
-      @param task_id destination task's id
-      @param message_id mail id
-      @param packet any data pointer
-      @return void
-    */
+     * @param task_id destination task's id
+     * @param message_id mail id
+     * @param packet any data pointer
+     * @return void
+     */
     static void sendMail(TaskID task_id, MessageID message_id, void *packet);
 
 
@@ -73,51 +81,53 @@
     Thread *thread;
 
     /** Wait for mail addressed to itself.
-      @return received MailPacket
-    */
+     * @return received MailPacket
+     */
     MailPacket *waitMail();
 
     /** Delete a mail queue block. it's responsible for received task.
-      @param mail received MailPacket
-      @return void
-    */
+     * @param mail received MailPacket
+     * @return void
+     */
     void deleteMail(MailPacket *mail);
 
     /** Output log to task's own stream pointer.
-      @param lv loglevel
-      @param format log format
-      @param ... log arguments
-      @return void
-    */
+     * @param lv loglevel
+     * @param format log format
+     * @param ... log arguments
+     * @return void
+     */
     void log(LogLevel lv, const char *format, ...);
 
-    class Logger {
+    /** Logger class */
+    class Logger
+    {
     public:
         /** Logger constructor
-          @param task_name For log prefix
-          @param sp Stream pointer for output destination(the default is USB serial).
-        */
+         * @param task_name For log prefix
+         * @param sp Stream pointer for output destination(the default is USB serial).
+         */
         Logger(const char *task_name, Stream *sp = Logger::sci);
-        
+
         /** Log level setter
-          @param lv log level
-          @return void
-        */
+         * @param lv log level
+         * @return void
+         */
         static void setLogLevel(LogLevel lv);
         void setLogStream(Stream *sp);
         static const char *lvSym[];
         static Stream *sci;
         static LogLevel lv;
-        Stream *sp;        
+        Stream *sp;
         const char *tag;
         char buf[LOG_BUF_SIZE];
     };
 
 private:
     /** Create a new thread with its own logger.
-      @param cfg TaskConfig struct pointer
-      @return void
-    */
+     * @param cfg TaskConfig struct pointer
+     * @return void
+     */
     Task(TaskConfig *config);
     ~Task();