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