同時公開のFunctionGenerator-DACと同時利用によりファンクション・ジェネレータを実現する。
Dependencies: BLE_API mbed nRF51822
FunctionGenerator-DAC
/users/ohneta/code/FunctionGenerator-DAC/
詳細は上記、FunctionGenerator-DACでおこないます。
FunctionGenCommands.h@0:6e47fe8d8f5c, 2015-06-16 (annotated)
- Committer:
- ohneta
- Date:
- Tue Jun 16 07:20:05 2015 +0000
- Revision:
- 0:6e47fe8d8f5c
1st release commit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ohneta | 0:6e47fe8d8f5c | 1 | //--------------------------------------------------------- |
ohneta | 0:6e47fe8d8f5c | 2 | /** |
ohneta | 0:6e47fe8d8f5c | 3 | * FunctionGenCommands.h |
ohneta | 0:6e47fe8d8f5c | 4 | */ |
ohneta | 0:6e47fe8d8f5c | 5 | //--------------------------------------------------------- |
ohneta | 0:6e47fe8d8f5c | 6 | |
ohneta | 0:6e47fe8d8f5c | 7 | #define FGC_BUFFERTRANSFER_MAX 16 |
ohneta | 0:6e47fe8d8f5c | 8 | |
ohneta | 0:6e47fe8d8f5c | 9 | typedef enum { |
ohneta | 0:6e47fe8d8f5c | 10 | // commands |
ohneta | 0:6e47fe8d8f5c | 11 | FGCommand_Non = 0x00, |
ohneta | 0:6e47fe8d8f5c | 12 | FGCommand_Device, |
ohneta | 0:6e47fe8d8f5c | 13 | FGCommand_Output, |
ohneta | 0:6e47fe8d8f5c | 14 | FGCommand_Frequency, |
ohneta | 0:6e47fe8d8f5c | 15 | FGCommand_WaveformInfo, |
ohneta | 0:6e47fe8d8f5c | 16 | FGCommand_WaveformBlock, |
ohneta | 0:6e47fe8d8f5c | 17 | FGCommand_WaveformToBuffer, |
ohneta | 0:6e47fe8d8f5c | 18 | |
ohneta | 0:6e47fe8d8f5c | 19 | // status |
ohneta | 0:6e47fe8d8f5c | 20 | FGStatus_Device = 0x80 | FGCommand_Device, |
ohneta | 0:6e47fe8d8f5c | 21 | FGStatus_Output = 0x80 | FGCommand_Output, |
ohneta | 0:6e47fe8d8f5c | 22 | FGStatus_Frequency = 0x80 | FGCommand_Frequency, |
ohneta | 0:6e47fe8d8f5c | 23 | |
ohneta | 0:6e47fe8d8f5c | 24 | // special |
ohneta | 0:6e47fe8d8f5c | 25 | FGCommand_Reset = 0xff, |
ohneta | 0:6e47fe8d8f5c | 26 | |
ohneta | 0:6e47fe8d8f5c | 27 | } enumFGCommand; |
ohneta | 0:6e47fe8d8f5c | 28 | |
ohneta | 0:6e47fe8d8f5c | 29 | |
ohneta | 0:6e47fe8d8f5c | 30 | // Characteristics |
ohneta | 0:6e47fe8d8f5c | 31 | #define CHARACTERISTICS_UUID_RESET 0xA100 |
ohneta | 0:6e47fe8d8f5c | 32 | #define CHARACTERISTICS_UUID_DEVICE 0xA101 |
ohneta | 0:6e47fe8d8f5c | 33 | #define CHARACTERISTICS_UUID_OUTPUT 0xA102 |
ohneta | 0:6e47fe8d8f5c | 34 | #define CHARACTERISTICS_UUID_FREQUENCY 0xA103 |
ohneta | 0:6e47fe8d8f5c | 35 | #define CHARACTERISTICS_UUID_WAVEFORMINFO 0xA110 |
ohneta | 0:6e47fe8d8f5c | 36 | #define CHARACTERISTICS_UUID_WAVEFORMBLOCK 0xA111 |
ohneta | 0:6e47fe8d8f5c | 37 | #define CHARACTERISTICS_UUID_WAVEFORMTOBUFFER 0xA112 |
ohneta | 0:6e47fe8d8f5c | 38 | |
ohneta | 0:6e47fe8d8f5c | 39 | //--------------------------------------------------------- |
ohneta | 0:6e47fe8d8f5c | 40 | #pragma pack(1) |
ohneta | 0:6e47fe8d8f5c | 41 | // for BLE waveform transfer format |
ohneta | 0:6e47fe8d8f5c | 42 | |
ohneta | 0:6e47fe8d8f5c | 43 | typedef struct { |
ohneta | 0:6e47fe8d8f5c | 44 | uint16_t waveSize; // Waveform全体のデータ長(byte) = blockSize * blockMaxNum |
ohneta | 0:6e47fe8d8f5c | 45 | uint8_t bitPerData; // 1データあたりのbit数 (8, 10, 12 or 16bit) |
ohneta | 0:6e47fe8d8f5c | 46 | |
ohneta | 0:6e47fe8d8f5c | 47 | uint8_t blockSize; // 1ブロックあたりのデータ転送サイズ(byte) (通常16bytes) |
ohneta | 0:6e47fe8d8f5c | 48 | uint8_t blockMaxNum; // ブロックの最大数 = (waveSize + 1) / blockSize |
ohneta | 0:6e47fe8d8f5c | 49 | } WaveformInfo, FGCommandWaveformInfo; |
ohneta | 0:6e47fe8d8f5c | 50 | |
ohneta | 0:6e47fe8d8f5c | 51 | typedef struct { |
ohneta | 0:6e47fe8d8f5c | 52 | uint16_t blockNo; // ブロックNo. 0 〜 (WaveformInfo.blockMaxNum - 1) |
ohneta | 0:6e47fe8d8f5c | 53 | uint8_t length; // WaveformBlock.bufferの有効な長さ |
ohneta | 0:6e47fe8d8f5c | 54 | uint8_t buffer[FGC_BUFFERTRANSFER_MAX]; // 実際のデータ |
ohneta | 0:6e47fe8d8f5c | 55 | } WaveformBlock, FGCommandWaveformBlock; |
ohneta | 0:6e47fe8d8f5c | 56 | |
ohneta | 0:6e47fe8d8f5c | 57 | //--------------------------------------------------------- |
ohneta | 0:6e47fe8d8f5c | 58 | // for I2C packet format |
ohneta | 0:6e47fe8d8f5c | 59 | |
ohneta | 0:6e47fe8d8f5c | 60 | // header |
ohneta | 0:6e47fe8d8f5c | 61 | typedef struct { |
ohneta | 0:6e47fe8d8f5c | 62 | uint8_t command; |
ohneta | 0:6e47fe8d8f5c | 63 | uint8_t length; |
ohneta | 0:6e47fe8d8f5c | 64 | } FGHeader; |
ohneta | 0:6e47fe8d8f5c | 65 | |
ohneta | 0:6e47fe8d8f5c | 66 | // command bodys |
ohneta | 0:6e47fe8d8f5c | 67 | typedef struct { |
ohneta | 0:6e47fe8d8f5c | 68 | uint8_t device; |
ohneta | 0:6e47fe8d8f5c | 69 | } FGCommandDevice; |
ohneta | 0:6e47fe8d8f5c | 70 | |
ohneta | 0:6e47fe8d8f5c | 71 | typedef struct { |
ohneta | 0:6e47fe8d8f5c | 72 | uint8_t on; |
ohneta | 0:6e47fe8d8f5c | 73 | } FGCommandOutput; |
ohneta | 0:6e47fe8d8f5c | 74 | |
ohneta | 0:6e47fe8d8f5c | 75 | typedef struct { |
ohneta | 0:6e47fe8d8f5c | 76 | uint32_t frequency; |
ohneta | 0:6e47fe8d8f5c | 77 | } FGCommandFrequency; |
ohneta | 0:6e47fe8d8f5c | 78 | |
ohneta | 0:6e47fe8d8f5c | 79 | //#define FGCommandWaveformInfo WaveformInfo |
ohneta | 0:6e47fe8d8f5c | 80 | //#define FGCommandWaveformBlock WaveformInfoBlock |
ohneta | 0:6e47fe8d8f5c | 81 | |
ohneta | 0:6e47fe8d8f5c | 82 | typedef struct { |
ohneta | 0:6e47fe8d8f5c | 83 | } FGCommandWaveformToBuffer; |
ohneta | 0:6e47fe8d8f5c | 84 | |
ohneta | 0:6e47fe8d8f5c | 85 | typedef struct { |
ohneta | 0:6e47fe8d8f5c | 86 | } FGCommandReset; |
ohneta | 0:6e47fe8d8f5c | 87 | |
ohneta | 0:6e47fe8d8f5c | 88 | // status bodys |
ohneta | 0:6e47fe8d8f5c | 89 | typedef struct { |
ohneta | 0:6e47fe8d8f5c | 90 | uint8_t device; |
ohneta | 0:6e47fe8d8f5c | 91 | } FGStatusDevice; |
ohneta | 0:6e47fe8d8f5c | 92 | |
ohneta | 0:6e47fe8d8f5c | 93 | typedef struct { |
ohneta | 0:6e47fe8d8f5c | 94 | uint8_t xxx; |
ohneta | 0:6e47fe8d8f5c | 95 | } FGStatusOutput; |
ohneta | 0:6e47fe8d8f5c | 96 | |
ohneta | 0:6e47fe8d8f5c | 97 | typedef struct { |
ohneta | 0:6e47fe8d8f5c | 98 | uint8_t xxx; |
ohneta | 0:6e47fe8d8f5c | 99 | } FGStatusFrequency; |
ohneta | 0:6e47fe8d8f5c | 100 | |
ohneta | 0:6e47fe8d8f5c | 101 | |
ohneta | 0:6e47fe8d8f5c | 102 | |
ohneta | 0:6e47fe8d8f5c | 103 | // command Packet format |
ohneta | 0:6e47fe8d8f5c | 104 | typedef struct { |
ohneta | 0:6e47fe8d8f5c | 105 | FGHeader header; |
ohneta | 0:6e47fe8d8f5c | 106 | union { |
ohneta | 0:6e47fe8d8f5c | 107 | FGCommandDevice commandDevice; |
ohneta | 0:6e47fe8d8f5c | 108 | FGCommandOutput commandOutput; |
ohneta | 0:6e47fe8d8f5c | 109 | FGCommandFrequency commandFrequency; |
ohneta | 0:6e47fe8d8f5c | 110 | FGCommandWaveformInfo commandWaveformInfo; |
ohneta | 0:6e47fe8d8f5c | 111 | FGCommandWaveformBlock commandWaveformBlock; |
ohneta | 0:6e47fe8d8f5c | 112 | FGCommandWaveformToBuffer commandWaveformToBuffer; |
ohneta | 0:6e47fe8d8f5c | 113 | |
ohneta | 0:6e47fe8d8f5c | 114 | FGCommandReset commandReset; |
ohneta | 0:6e47fe8d8f5c | 115 | |
ohneta | 0:6e47fe8d8f5c | 116 | FGStatusDevice statusDevice; |
ohneta | 0:6e47fe8d8f5c | 117 | FGStatusOutput statusOutput; |
ohneta | 0:6e47fe8d8f5c | 118 | FGStatusFrequency statusFrequency; |
ohneta | 0:6e47fe8d8f5c | 119 | } body; |
ohneta | 0:6e47fe8d8f5c | 120 | } FGPacket; |
ohneta | 0:6e47fe8d8f5c | 121 | |
ohneta | 0:6e47fe8d8f5c | 122 | #pragma pack() |