Jarda Pajskr / freemaster_lib

Dependents:   FreeMASTER_HelloWorld FreeMASTER_HelloWorld2 FreeMASTER_HelloWorld3

Fork of freemaster_lib by Jarda Pajskr

Committer:
JardaPajskr
Date:
Sun Nov 16 21:22:03 2014 +0000
Revision:
20:355a9738a180
Parent:
17:b2a783a8691f
updated header files

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JardaPajskr 20:355a9738a180 1 /*******************************************************************************
JardaPajskr 20:355a9738a180 2 *
JardaPajskr 20:355a9738a180 3 * Copyright 2004-2014 Freescale Semiconductor, Inc.
JardaPajskr 20:355a9738a180 4 *
JardaPajskr 20:355a9738a180 5 *******************************************************************************/
JardaPajskr 0:fb135bf60f82 6 #ifndef MBED_FREEMASTER_H
JardaPajskr 0:fb135bf60f82 7 #define MBED_FREEMASTER_H
JardaPajskr 0:fb135bf60f82 8
JardaPajskr 0:fb135bf60f82 9 #include "platform.h"
JardaPajskr 0:fb135bf60f82 10
JardaPajskr 0:fb135bf60f82 11 #if DEVICE_SERIAL
JardaPajskr 0:fb135bf60f82 12
JardaPajskr 0:fb135bf60f82 13 #include "serial_api.h"
JardaPajskr 11:d1de61dc3766 14 #include "freemaster_cfg.h"
JardaPajskr 0:fb135bf60f82 15 #include "freemaster.h"
JardaPajskr 13:62ef0bfeb036 16 #include "freemaster_tsa.h"
JardaPajskr 0:fb135bf60f82 17
JardaPajskr 0:fb135bf60f82 18 namespace mbed {
JardaPajskr 0:fb135bf60f82 19
JardaPajskr 0:fb135bf60f82 20 /** A FreeMASTER serial driver
JardaPajskr 0:fb135bf60f82 21 *
JardaPajskr 0:fb135bf60f82 22 * Can be used for debugging code over the serial line
JardaPajskr 0:fb135bf60f82 23 *
JardaPajskr 0:fb135bf60f82 24 * Example:
JardaPajskr 0:fb135bf60f82 25 * @code
JardaPajskr 0:fb135bf60f82 26 * // Set up the FreeMASTER serial driver
JardaPajskr 0:fb135bf60f82 27 *
JardaPajskr 0:fb135bf60f82 28 * #include "mbed.h"
JardaPajskr 0:fb135bf60f82 29 * #include "freemaster_class.h"
JardaPajskr 0:fb135bf60f82 30 *
JardaPajskr 0:fb135bf60f82 31 * Freemaster fm(USBTX, USBRX);
JardaPajskr 0:fb135bf60f82 32 *
JardaPajskr 0:fb135bf60f82 33 * FMSTR_TSA_TABLE_LIST_BEGIN()
JardaPajskr 0:fb135bf60f82 34 * FMSTR_TSA_TABLE_LIST_END()
JardaPajskr 0:fb135bf60f82 35 *
JardaPajskr 0:fb135bf60f82 36 * //define global variables
JardaPajskr 17:b2a783a8691f 37 * volatile unsigned char var8;
JardaPajskr 17:b2a783a8691f 38 * volatile unsigned short var16;
JardaPajskr 0:fb135bf60f82 39 *
JardaPajskr 0:fb135bf60f82 40 * int main() {
JardaPajskr 0:fb135bf60f82 41 * //register global or static variables
JardaPajskr 17:b2a783a8691f 42 * fm.TsaAddVar(FMSTR_TSA_RW_VAR_CFG(var8,FMSTR_TSA_UINT8));
JardaPajskr 0:fb135bf60f82 43 * //register read only variable
JardaPajskr 17:b2a783a8691f 44 * fm.TsaAddVar(FMSTR_TSA_RO_VAR_CFG(var16,FMSTR_TSA_UINT16));
JardaPajskr 0:fb135bf60f82 45 * while(1)
JardaPajskr 0:fb135bf60f82 46 * {
JardaPajskr 17:b2a783a8691f 47 * //your application
JardaPajskr 17:b2a783a8691f 48 * var16+=var8;
JardaPajskr 0:fb135bf60f82 49 * }
JardaPajskr 0:fb135bf60f82 50 * }
JardaPajskr 0:fb135bf60f82 51 * @endcode
JardaPajskr 0:fb135bf60f82 52 */
JardaPajskr 15:24a63ac82fc3 53
JardaPajskr 0:fb135bf60f82 54 class Freemaster {
JardaPajskr 0:fb135bf60f82 55
JardaPajskr 0:fb135bf60f82 56 public:
JardaPajskr 1:5033fe82d4c2 57 /** Create FreeMASTER interface
JardaPajskr 1:5033fe82d4c2 58 *
JardaPajskr 1:5033fe82d4c2 59 * @param tx Transmit pin
JardaPajskr 1:5033fe82d4c2 60 * @param rx Receive pin
JardaPajskr 1:5033fe82d4c2 61 * @param tsaMembers Maximum of variables to register dynamically. (optional)
JardaPajskr 1:5033fe82d4c2 62 * @param recBufferSize Buffer size for recorder feature. (optional)
JardaPajskr 1:5033fe82d4c2 63 * @param flags Advanced configuration. (optional)
JardaPajskr 1:5033fe82d4c2 64 *
JardaPajskr 1:5033fe82d4c2 65 */
JardaPajskr 0:fb135bf60f82 66 Freemaster(PinName tx, PinName rx, uint32_t tsaMembers = 20, uint32_t recBufferSize = 1024, uint32_t flags = 0);
JardaPajskr 1:5033fe82d4c2 67
JardaPajskr 1:5033fe82d4c2 68 /** Set the baud rate of the serial port
JardaPajskr 1:5033fe82d4c2 69 *
JardaPajskr 1:5033fe82d4c2 70 * @param baudrate The baudrate of the serial port (default = 9600).
JardaPajskr 1:5033fe82d4c2 71 */
JardaPajskr 0:fb135bf60f82 72 void baud(int baudrate);
JardaPajskr 1:5033fe82d4c2 73
JardaPajskr 1:5033fe82d4c2 74 /** Catch initialized variables into recorder buffer.
JardaPajskr 1:5033fe82d4c2 75 */
JardaPajskr 0:fb135bf60f82 76 void Recorder(void);
JardaPajskr 8:17470feaa6be 77
JardaPajskr 17:b2a783a8691f 78 /** Trigger sampling of the recorder by SW.
JardaPajskr 8:17470feaa6be 79 */
JardaPajskr 8:17470feaa6be 80 void TriggerRec(void);
JardaPajskr 8:17470feaa6be 81
JardaPajskr 8:17470feaa6be 82 /** This function can be used to detect if any Application Command is waiting to be processed by the application.
JardaPajskr 17:b2a783a8691f 83 *
JardaPajskr 17:b2a783a8691f 84 * @returns
JardaPajskr 17:b2a783a8691f 85 * 1-247 - command needs to be processed by application\n
JardaPajskr 17:b2a783a8691f 86 * FMSTR_APPCMDRESULT_NOCMD - no command is pending
JardaPajskr 8:17470feaa6be 87 */
JardaPajskr 17:b2a783a8691f 88 FMSTR_APPCMD_CODE GetAppCmd(void);
JardaPajskr 8:17470feaa6be 89
JardaPajskr 8:17470feaa6be 90 /** This function can be used to retrieve the Application Command data.
JardaPajskr 17:b2a783a8691f 91 *
JardaPajskr 17:b2a783a8691f 92 * @param pDataLen Pointer to variable, which receives length of the data available in buffer.
JardaPajskr 17:b2a783a8691f 93 *
JardaPajskr 17:b2a783a8691f 94 * @returns Pointer to buffer, which holds received data. The data needs to be handled before FMSTR_AppCmdAck() call.
JardaPajskr 8:17470feaa6be 95 */
JardaPajskr 8:17470feaa6be 96 FMSTR_APPCMD_PDATA GetAppCmdData(FMSTR_SIZE* pDataLen);
JardaPajskr 8:17470feaa6be 97
JardaPajskr 8:17470feaa6be 98 /** This function can be used to register a given function as a callback handler for an Application Command.
JardaPajskr 17:b2a783a8691f 99 *
JardaPajskr 17:b2a783a8691f 100 * @param nAppCmdCode An Application Command code for which the callback is to be registered.
JardaPajskr 17:b2a783a8691f 101 * @param pCallbackFunc A pointer to a callback function which is to be registered. Use NULL to un-register a callback
JardaPajskr 17:b2a783a8691f 102 * registered previously with this Application Command.
JardaPajskr 17:b2a783a8691f 103 *
JardaPajskr 17:b2a783a8691f 104 * @returns
JardaPajskr 17:b2a783a8691f 105 * 1 if there is space to register a variable /n
JardaPajskr 17:b2a783a8691f 106 * 0 otherwise
JardaPajskr 8:17470feaa6be 107 */
JardaPajskr 8:17470feaa6be 108 FMSTR_BOOL RegisterAppCmdCall(FMSTR_APPCMD_CODE nAppCmdCode, FMSTR_PAPPCMDFUNC pCallbackFunc);
JardaPajskr 8:17470feaa6be 109
JardaPajskr 8:17470feaa6be 110 /** This function is used when Application Command processing is finished in the application.
JardaPajskr 17:b2a783a8691f 111 *
JardaPajskr 17:b2a783a8691f 112 * @param nResultCode The result code, which is to be returned to the FreeMASTER tool.
JardaPajskr 8:17470feaa6be 113 */
JardaPajskr 8:17470feaa6be 114 void AppCmdAck(FMSTR_APPCMD_RESULT nResultCode);
JardaPajskr 8:17470feaa6be 115
JardaPajskr 8:17470feaa6be 116 /** This function can be used before the Application Command processing is finished.
JardaPajskr 17:b2a783a8691f 117 *
JardaPajskr 17:b2a783a8691f 118 * @param nResultDataAddr A pointer to data buffer which is to be copied to the Application Command data buffer.
JardaPajskr 17:b2a783a8691f 119 * @param nResultDataLen The length of a data to be copied. It must not exceed the FMSTR_APPCMD_BUFF_SIZE value.
JardaPajskr 8:17470feaa6be 120 */
JardaPajskr 8:17470feaa6be 121 void AppCmdSetResponseData(FMSTR_ADDR nResultDataAddr, FMSTR_SIZE nResultDataLen);
JardaPajskr 8:17470feaa6be 122
JardaPajskr 0:fb135bf60f82 123 void Poll(void);
JardaPajskr 0:fb135bf60f82 124
JardaPajskr 17:b2a783a8691f 125 /** Register variables to dynamic TSA table
JardaPajskr 4:256c3ffc6f40 126 *
JardaPajskr 17:b2a783a8691f 127 * @param (name, type, addr, info) use following macros to register variable\n
JardaPajskr 17:b2a783a8691f 128 * FMSTR_TSA_STRUCT_CFG(name) - register structure(name)\n
JardaPajskr 17:b2a783a8691f 129 * FMSTR_TSA_MEMBER_CFG(parenttype,name,type) - register member(name) of (type) in structure(parenttype), \n
JardaPajskr 17:b2a783a8691f 130 * FMSTR_TSA_RO_VAR_CFG(name,type) - register Read Only variable(name) of (type)\n
JardaPajskr 17:b2a783a8691f 131 * FMSTR_TSA_RW_VAR_CFG(name,type) - register variable(name) of (type)\n
JardaPajskr 17:b2a783a8691f 132 * FMSTR_TSA_RO_MEM_CFG(name,type,addr,size) - register Read Only memory block(name) of (type)\n
JardaPajskr 17:b2a783a8691f 133 * FMSTR_TSA_RW_MEM_CFG(name,type,addr,size) - register memory block(name) of (type)\n
JardaPajskr 4:256c3ffc6f40 134 *
JardaPajskr 4:256c3ffc6f40 135 * @returns
JardaPajskr 17:b2a783a8691f 136 * 1 if there is space to register a variable \n
JardaPajskr 4:256c3ffc6f40 137 * 0 otherwise
JardaPajskr 17:b2a783a8691f 138 * @note use following macros to define type of variable:\n
JardaPajskr 17:b2a783a8691f 139 * FMSTR_TSA_UINT8, FMSTR_TSA_UINT16, FMSTR_TSA_UINT32, FMSTR_TSA_UINT64, \n
JardaPajskr 17:b2a783a8691f 140 * FMSTR_TSA_SINT8, FMSTR_TSA_SINT16, FMSTR_TSA_SINT32, FMSTR_TSA_SINT64, \n
JardaPajskr 17:b2a783a8691f 141 * FMSTR_TSA_UFRAC16, FMSTR_TSA_UFRAC32, FMSTR_TSA_FRAC16, FMSTR_TSA_FRAC32,\n
JardaPajskr 17:b2a783a8691f 142 * FMSTR_TSA_FLOAT, FMSTR_TSA_DOUBLE
JardaPajskr 17:b2a783a8691f 143 * @note Default configuration can register up to 20 variables
JardaPajskr 4:256c3ffc6f40 144 */
JardaPajskr 0:fb135bf60f82 145 FMSTR_BOOL TsaAddVar(FMSTR_TSATBL_STRPTR name, FMSTR_TSATBL_STRPTR type, FMSTR_TSATBL_VOIDPTR addr, FMSTR_TSATBL_VOIDPTR info);
JardaPajskr 0:fb135bf60f82 146
JardaPajskr 0:fb135bf60f82 147 static void _irq_handler(uint32_t id, SerialIrq irq_type);
JardaPajskr 0:fb135bf60f82 148 protected:
JardaPajskr 0:fb135bf60f82 149 serial_t _serial;
JardaPajskr 0:fb135bf60f82 150 int _baud;
JardaPajskr 0:fb135bf60f82 151 void* tsaTable;
JardaPajskr 0:fb135bf60f82 152 void* recBuf;
JardaPajskr 0:fb135bf60f82 153
JardaPajskr 0:fb135bf60f82 154 };
JardaPajskr 0:fb135bf60f82 155
JardaPajskr 0:fb135bf60f82 156 } // namespace mbed
JardaPajskr 0:fb135bf60f82 157 #endif
JardaPajskr 0:fb135bf60f82 158
JardaPajskr 0:fb135bf60f82 159 #endif