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.
Dependents: FreeMASTER_HelloWorld FreeMASTER_HelloWorld2 FreeMASTER_HelloWorld3
Fork of freemaster_lib by
class/freemaster_class.h@20:355a9738a180, 2014-11-16 (annotated)
- 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?
| User | Revision | Line number | New 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 |
