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