Jarda Pajskr / freemaster_lib

Dependents:   FreeMASTER_HelloWorld FreeMASTER_HelloWorld2 FreeMASTER_HelloWorld3

Fork of freemaster_lib by Jarda Pajskr

Committer:
JardaPajskr
Date:
Wed Jun 04 17:06:21 2014 +0000
Revision:
11:d1de61dc3766
Parent:
8:17470feaa6be
Child:
13:62ef0bfeb036
fixed dynamic TSA

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JardaPajskr 0:fb135bf60f82 1 #ifndef MBED_FREEMASTER_H
JardaPajskr 0:fb135bf60f82 2 #define MBED_FREEMASTER_H
JardaPajskr 0:fb135bf60f82 3
JardaPajskr 0:fb135bf60f82 4 #include "platform.h"
JardaPajskr 0:fb135bf60f82 5
JardaPajskr 0:fb135bf60f82 6 #if DEVICE_SERIAL
JardaPajskr 0:fb135bf60f82 7
JardaPajskr 0:fb135bf60f82 8 #include "serial_api.h"
JardaPajskr 11:d1de61dc3766 9 #include "freemaster_cfg.h"
JardaPajskr 0:fb135bf60f82 10 #include "freemaster.h"
JardaPajskr 0:fb135bf60f82 11
JardaPajskr 0:fb135bf60f82 12 namespace mbed {
JardaPajskr 0:fb135bf60f82 13
JardaPajskr 0:fb135bf60f82 14 /** A FreeMASTER serial driver
JardaPajskr 0:fb135bf60f82 15 *
JardaPajskr 0:fb135bf60f82 16 * Can be used for debugging code over the serial line
JardaPajskr 0:fb135bf60f82 17 *
JardaPajskr 0:fb135bf60f82 18 * Example:
JardaPajskr 0:fb135bf60f82 19 * @code
JardaPajskr 0:fb135bf60f82 20 * // Set up the FreeMASTER serial driver
JardaPajskr 0:fb135bf60f82 21 *
JardaPajskr 0:fb135bf60f82 22 * #include "mbed.h"
JardaPajskr 0:fb135bf60f82 23 * #include "freemaster_class.h"
JardaPajskr 0:fb135bf60f82 24 *
JardaPajskr 0:fb135bf60f82 25 * Freemaster fm(USBTX, USBRX);
JardaPajskr 0:fb135bf60f82 26 *
JardaPajskr 0:fb135bf60f82 27 * FMSTR_TSA_TABLE_LIST_BEGIN()
JardaPajskr 0:fb135bf60f82 28 * FMSTR_TSA_TABLE_LIST_END()
JardaPajskr 0:fb135bf60f82 29 *
JardaPajskr 0:fb135bf60f82 30 * //define global variables
JardaPajskr 0:fb135bf60f82 31 * volatile unsigned char example_var8;
JardaPajskr 0:fb135bf60f82 32 * volatile unsigned short example_var16;
JardaPajskr 0:fb135bf60f82 33 *
JardaPajskr 0:fb135bf60f82 34 * int main() {
JardaPajskr 0:fb135bf60f82 35 * //register global or static variables
JardaPajskr 0:fb135bf60f82 36 * fm.TsaAddVar(FMSTR_TSA_RW_VAR_CFG(example_var8,FMSTR_TSA_UINT8));
JardaPajskr 0:fb135bf60f82 37 * //register read only variable
JardaPajskr 0:fb135bf60f82 38 * fm.TsaAddVar(FMSTR_TSA_RO_VAR_CFG(example_var16,FMSTR_TSA_UINT16));
JardaPajskr 0:fb135bf60f82 39 * while(1)
JardaPajskr 0:fb135bf60f82 40 * {
JardaPajskr 0:fb135bf60f82 41 * //your application
JardaPajskr 0:fb135bf60f82 42 * }
JardaPajskr 0:fb135bf60f82 43 * }
JardaPajskr 0:fb135bf60f82 44 * @endcode
JardaPajskr 0:fb135bf60f82 45 */
JardaPajskr 0:fb135bf60f82 46 class Freemaster {
JardaPajskr 0:fb135bf60f82 47
JardaPajskr 0:fb135bf60f82 48 public:
JardaPajskr 1:5033fe82d4c2 49 /** Create FreeMASTER interface
JardaPajskr 1:5033fe82d4c2 50 *
JardaPajskr 1:5033fe82d4c2 51 * @param tx Transmit pin
JardaPajskr 1:5033fe82d4c2 52 * @param rx Receive pin
JardaPajskr 1:5033fe82d4c2 53 * @param tsaMembers Maximum of variables to register dynamically. (optional)
JardaPajskr 1:5033fe82d4c2 54 * @param recBufferSize Buffer size for recorder feature. (optional)
JardaPajskr 1:5033fe82d4c2 55 * @param flags Advanced configuration. (optional)
JardaPajskr 1:5033fe82d4c2 56 *
JardaPajskr 1:5033fe82d4c2 57 */
JardaPajskr 0:fb135bf60f82 58 Freemaster(PinName tx, PinName rx, uint32_t tsaMembers = 20, uint32_t recBufferSize = 1024, uint32_t flags = 0);
JardaPajskr 1:5033fe82d4c2 59
JardaPajskr 1:5033fe82d4c2 60 /** Set the baud rate of the serial port
JardaPajskr 1:5033fe82d4c2 61 *
JardaPajskr 1:5033fe82d4c2 62 * @param baudrate The baudrate of the serial port (default = 9600).
JardaPajskr 1:5033fe82d4c2 63 */
JardaPajskr 0:fb135bf60f82 64 void baud(int baudrate);
JardaPajskr 1:5033fe82d4c2 65
JardaPajskr 1:5033fe82d4c2 66 /** Catch initialized variables into recorder buffer.
JardaPajskr 1:5033fe82d4c2 67 */
JardaPajskr 0:fb135bf60f82 68 void Recorder(void);
JardaPajskr 8:17470feaa6be 69
JardaPajskr 8:17470feaa6be 70 /** Triggert sampling of the recorder.
JardaPajskr 8:17470feaa6be 71 */
JardaPajskr 8:17470feaa6be 72 void TriggerRec(void);
JardaPajskr 8:17470feaa6be 73
JardaPajskr 8:17470feaa6be 74 /** This function can be used to detect if any Application Command is waiting to be processed by the application.
JardaPajskr 8:17470feaa6be 75 */
JardaPajskr 8:17470feaa6be 76 void GetAppCmd(void);
JardaPajskr 8:17470feaa6be 77
JardaPajskr 8:17470feaa6be 78 /** This function can be used to retrieve the Application Command data.
JardaPajskr 8:17470feaa6be 79 */
JardaPajskr 8:17470feaa6be 80 FMSTR_APPCMD_PDATA GetAppCmdData(FMSTR_SIZE* pDataLen);
JardaPajskr 8:17470feaa6be 81
JardaPajskr 8:17470feaa6be 82 /** This function can be used to register a given function as a callback handler for an Application Command.
JardaPajskr 8:17470feaa6be 83 */
JardaPajskr 8:17470feaa6be 84 FMSTR_BOOL RegisterAppCmdCall(FMSTR_APPCMD_CODE nAppCmdCode, FMSTR_PAPPCMDFUNC pCallbackFunc);
JardaPajskr 8:17470feaa6be 85
JardaPajskr 8:17470feaa6be 86 /** This function is used when Application Command processing is finished in the application.
JardaPajskr 8:17470feaa6be 87 */
JardaPajskr 8:17470feaa6be 88 void AppCmdAck(FMSTR_APPCMD_RESULT nResultCode);
JardaPajskr 8:17470feaa6be 89
JardaPajskr 8:17470feaa6be 90 /** This function can be used before the Application Command processing is finished.
JardaPajskr 8:17470feaa6be 91 */
JardaPajskr 8:17470feaa6be 92 void AppCmdSetResponseData(FMSTR_ADDR nResultDataAddr, FMSTR_SIZE nResultDataLen);
JardaPajskr 8:17470feaa6be 93
JardaPajskr 0:fb135bf60f82 94 void Poll(void);
JardaPajskr 0:fb135bf60f82 95
JardaPajskr 4:256c3ffc6f40 96 /** Register variables to TSA table
JardaPajskr 4:256c3ffc6f40 97 *
JardaPajskr 4:256c3ffc6f40 98 * @param name, type, addr, info, use following macros to register variable
JardaPajskr 4:256c3ffc6f40 99 * FMSTR_TSA_STRUCT_CFG(name) - register structure
JardaPajskr 4:256c3ffc6f40 100 * FMSTR_TSA_MEMBER_CFG(parenttype,name,type) - register member of structure
JardaPajskr 4:256c3ffc6f40 101 * FMSTR_TSA_RO_VAR_CFG(name,type) - register Read Only variable
JardaPajskr 4:256c3ffc6f40 102 * FMSTR_TSA_RW_VAR_CFG(name,type) - register variable
JardaPajskr 4:256c3ffc6f40 103 * FMSTR_TSA_RO_MEM_CFG(name,type,addr,size) - register read only of memory block
JardaPajskr 4:256c3ffc6f40 104 * FMSTR_TSA_RW_MEM_CFG(name,type,addr,size) - register memory block
JardaPajskr 4:256c3ffc6f40 105 *
JardaPajskr 4:256c3ffc6f40 106 * @returns
JardaPajskr 4:256c3ffc6f40 107 * 1 if there is space to register a variable,
JardaPajskr 4:256c3ffc6f40 108 * 0 otherwise
JardaPajskr 4:256c3ffc6f40 109 */
JardaPajskr 0:fb135bf60f82 110 FMSTR_BOOL TsaAddVar(FMSTR_TSATBL_STRPTR name, FMSTR_TSATBL_STRPTR type, FMSTR_TSATBL_VOIDPTR addr, FMSTR_TSATBL_VOIDPTR info);
JardaPajskr 0:fb135bf60f82 111
JardaPajskr 0:fb135bf60f82 112 static void _irq_handler(uint32_t id, SerialIrq irq_type);
JardaPajskr 0:fb135bf60f82 113 protected:
JardaPajskr 0:fb135bf60f82 114 serial_t _serial;
JardaPajskr 0:fb135bf60f82 115 int _baud;
JardaPajskr 0:fb135bf60f82 116 void* tsaTable;
JardaPajskr 0:fb135bf60f82 117 void* recBuf;
JardaPajskr 0:fb135bf60f82 118
JardaPajskr 0:fb135bf60f82 119 };
JardaPajskr 0:fb135bf60f82 120
JardaPajskr 0:fb135bf60f82 121 } // namespace mbed
JardaPajskr 0:fb135bf60f82 122 #endif
JardaPajskr 0:fb135bf60f82 123
JardaPajskr 0:fb135bf60f82 124 #endif