同時公開のFunctionGenerator-DACと同時利用によりファンクション・ジェネレータを実現する。
Dependencies: BLE_API mbed nRF51822
FunctionGenerator-DAC
/users/ohneta/code/FunctionGenerator-DAC/
詳細は上記、FunctionGenerator-DACでおこないます。
Diff: FunctionGenCommands.h
- Revision:
- 0:6e47fe8d8f5c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/FunctionGenCommands.h Tue Jun 16 07:20:05 2015 +0000 @@ -0,0 +1,122 @@ +//--------------------------------------------------------- +/** + * FunctionGenCommands.h + */ +//--------------------------------------------------------- + +#define FGC_BUFFERTRANSFER_MAX 16 + +typedef enum { + // commands + FGCommand_Non = 0x00, + FGCommand_Device, + FGCommand_Output, + FGCommand_Frequency, + FGCommand_WaveformInfo, + FGCommand_WaveformBlock, + FGCommand_WaveformToBuffer, + + // status + FGStatus_Device = 0x80 | FGCommand_Device, + FGStatus_Output = 0x80 | FGCommand_Output, + FGStatus_Frequency = 0x80 | FGCommand_Frequency, + + // special + FGCommand_Reset = 0xff, + +} enumFGCommand; + + +// Characteristics +#define CHARACTERISTICS_UUID_RESET 0xA100 +#define CHARACTERISTICS_UUID_DEVICE 0xA101 +#define CHARACTERISTICS_UUID_OUTPUT 0xA102 +#define CHARACTERISTICS_UUID_FREQUENCY 0xA103 +#define CHARACTERISTICS_UUID_WAVEFORMINFO 0xA110 +#define CHARACTERISTICS_UUID_WAVEFORMBLOCK 0xA111 +#define CHARACTERISTICS_UUID_WAVEFORMTOBUFFER 0xA112 + +//--------------------------------------------------------- +#pragma pack(1) +// for BLE waveform transfer format + +typedef struct { + uint16_t waveSize; // Waveform全体のデータ長(byte) = blockSize * blockMaxNum + uint8_t bitPerData; // 1データあたりのbit数 (8, 10, 12 or 16bit) + + uint8_t blockSize; // 1ブロックあたりのデータ転送サイズ(byte) (通常16bytes) + uint8_t blockMaxNum; // ブロックの最大数 = (waveSize + 1) / blockSize +} WaveformInfo, FGCommandWaveformInfo; + +typedef struct { + uint16_t blockNo; // ブロックNo. 0 〜 (WaveformInfo.blockMaxNum - 1) + uint8_t length; // WaveformBlock.bufferの有効な長さ + uint8_t buffer[FGC_BUFFERTRANSFER_MAX]; // 実際のデータ +} WaveformBlock, FGCommandWaveformBlock; + +//--------------------------------------------------------- +// for I2C packet format + +// header +typedef struct { + uint8_t command; + uint8_t length; +} FGHeader; + +// command bodys +typedef struct { + uint8_t device; +} FGCommandDevice; + +typedef struct { + uint8_t on; +} FGCommandOutput; + +typedef struct { + uint32_t frequency; +} FGCommandFrequency; + +//#define FGCommandWaveformInfo WaveformInfo +//#define FGCommandWaveformBlock WaveformInfoBlock + +typedef struct { +} FGCommandWaveformToBuffer; + +typedef struct { +} FGCommandReset; + +// status bodys +typedef struct { + uint8_t device; +} FGStatusDevice; + +typedef struct { + uint8_t xxx; +} FGStatusOutput; + +typedef struct { + uint8_t xxx; +} FGStatusFrequency; + + + +// command Packet format +typedef struct { + FGHeader header; + union { + FGCommandDevice commandDevice; + FGCommandOutput commandOutput; + FGCommandFrequency commandFrequency; + FGCommandWaveformInfo commandWaveformInfo; + FGCommandWaveformBlock commandWaveformBlock; + FGCommandWaveformToBuffer commandWaveformToBuffer; + + FGCommandReset commandReset; + + FGStatusDevice statusDevice; + FGStatusOutput statusOutput; + FGStatusFrequency statusFrequency; + } body; +} FGPacket; + +#pragma pack()