Akifumi Takahashi / StrCommandHandler

Dependents:   Interference_Simple StrCommandHandler_Demo

StrCommandHandler.h

Committer:
aktk
Date:
2019-10-31
Revision:
1:1d46d90eb7bf
Parent:
0:024213917a9f
Child:
2:a4873d38a32c

File content as of revision 1:1d46d90eb7bf:

#ifndef STR_COMMAND_HANDLER_H
#define STR_COMMAND_HANDLER_H
#include "mbed.h"
#include <string>

/** Maps strings and functions
 *
 *  This class can map strings(commands) and functions receiving no arguments
 *  returning int.
 */
class StrCommandHandler
{
public:
    StrCommandHandler(
        int const arg_num_ofcommand = 10
    );

    /** Maps strings and functions
     *
     *  This maps strings(commands) and functions receiving no arguments,
     *  returning int.
     */
    int map(
        const char * const   arg_command,
        int (*arg_pfunc)(void)
    );

    /** Analyzes a command input and executs a function corresponding to it.
     *
     *  This analyze a string(commands) and executs a corresponding function.
     *  If an error occur, the function returns an error code
     *  Error code:
     *  -   Exception of NULL pointer           returns 0xFFFFFFFF
     *  -   Exception of Null character         returna 0xFFFFFFFE
     *  -   Exception of Over length            returns 0xFFFFFFFD
     *  -   Exception of Not registered Command returns 0xFFFFFFFC;
     */
    int exe(
        const char* const   arg_command
    );

    /** Lists commands registered
     *
     *  This lists commands registered by users. 
     */
    void list();

private:
    /** Array of commands' name
     *
     *   The length should be within 15 without last '\0'
     */
    char (*m_command_name)[16];

    /** Array of pointers to functions
     *
     *   The length should be within 15 without last '\0'
     */
    int (**m_function)(void);

    /** Numbers of commands registered in this.
     *
     *  If commands are registered over this value,
     *  this value increase by 5, and arrays get reallocated.
     */
    int m_num_ofcommands;
};
#endif