From 9bc065905caa4e2cfad7491e98c9583cd5a96bb0 Mon Sep 17 00:00:00 2001 From: Ta-Shun Su Date: Wed, 22 May 2019 10:25:09 +0800 Subject: [PATCH] add parameter table --- .../app/headstage/sti/neulive_sti.devlib.json | 221 +++++++++++++++ .../app/headstage/tni/elite.devlib.json | 219 +++++++++++++++ .../headstage/uni/neulive-uni1.2.devlib.json | 256 ++++++++++++++++++ 3 files changed, 696 insertions(+) create mode 100644 simplelink/ble_sdk_2_02_02_25/src/examples/simple_peripheral/cc26xx/app/headstage/sti/neulive_sti.devlib.json create mode 100644 simplelink/ble_sdk_2_02_02_25/src/examples/simple_peripheral/cc26xx/app/headstage/tni/elite.devlib.json create mode 100644 simplelink/ble_sdk_2_02_02_25/src/examples/simple_peripheral/cc26xx/app/headstage/uni/neulive-uni1.2.devlib.json diff --git a/simplelink/ble_sdk_2_02_02_25/src/examples/simple_peripheral/cc26xx/app/headstage/sti/neulive_sti.devlib.json b/simplelink/ble_sdk_2_02_02_25/src/examples/simple_peripheral/cc26xx/app/headstage/sti/neulive_sti.devlib.json new file mode 100644 index 000000000..53d3289af --- /dev/null +++ b/simplelink/ble_sdk_2_02_02_25/src/examples/simple_peripheral/cc26xx/app/headstage/sti/neulive_sti.devlib.json @@ -0,0 +1,221 @@ +{ + "name": "NeuliveSTI", + "version": "0.1", + "match_rule": { + "local_name_pattern": "NeuliveSTI.*", + "major_product_number": 1, + "minor_product_number": 2, + "major_version_number": 0, + "minor_version_number": 1 + }, + "constant": { + "SET_CH_NUM": 2, + "FREQ_PREC_LIST": [ + 1, + 0.1 + ] + }, + "parameters": { + "SET_CH": { + "description": "channel to set", + "private": true, + "domain": [ + "SET_CH_NUM" + ], + "value": "VALUE + 1" + }, + "RAW_CHANNEL": { + "description": "record channels", + "record_meta": true, + "domain": { + "set": [ + "SET_CH_NUM" + ] + }, + "value": "VALUE + 1" + }, + "CHANNEL": { + "description": "record channels", + "domain": "property", + "value": "[0, *_value('RAW_CHANNEL')]" + }, + "SAMPLE_RATE": { + "description": "", + "domain": "constant", + "initial": 1 + }, + "AMP_GAIN": { + "description": "", + "domain": "constant", + "initial": 1 + }, + "STI_MODE": { + "description": "Stimulation mode", + "domain": { + "array": [ + 4 + ], + "index": "SET_CH", + "size": "SET_CH_NUM" + }, + "value": [ + "Positive Pulse", + "Negative Pulse", + "Pos to Neg Pulse", + "Neg to Pos Pulse" + ] + }, + "CURRENT": { + "description": "Stimulation current", + "domain": [ + 4001 + ] + }, + "STI_FREQ": { + "description": "Stimulation frequency", + "domain": { + "array": [ + 2001 + ], + "index": "SET_CH", + "size": "SET_CH_NUM" + }, + "value": { + "expression": "VALUE * _value('PRECISION')", + "dependency": "PRECISION" + }, + "guard": { + "expression": "_value('STI_PW_LENGTH') >= 0", + "raise": "STI_FREQ too small" + } + }, + "STI_PW": { + "description": "Stimulation pulse width", + "domain": { + "array": [ + 1000 + ], + "index": "SET_CH", + "size": "SET_CH_NUM" + }, + "guard": { + "expression": "_value('STI_PW_LENGTH') >= 0", + "raise": "STI_PW too large" + } + }, + "STI_PW_IPI": { + "description": "Stimulation Inter Phase Interval", + "domain": { + "array": [ + 1000 + ], + "index": "SET_CH", + "size": "SET_CH_NUM" + }, + "guard": { + "expression": "_value('STI_PW_LENGTH') >= 0", + "raise": "STI_PW too small" + } + }, + "STI_NUM": { + "description": "Stimulation Times", + "domain": { + "array": [ + 1000 + ], + "index": "SET_CH", + "size": "SET_CH_NUM" + } + }, + "PRECISION": { + "alias": "PREC", + "description": "frequency precision", + "domain": { + "array": [ + "len(FREQ_PREC_LIST)" + ], + "index": "SET_CH", + "size": "SET_CH_NUM" + }, + "value": "FREQ_PREC_LIST[VALUE]", + "guard": { + "expression": "_value('STI_PW_LENGTH') >= 0", + "raise": "STI_FREQ too small" + } + }, + "STI_PW_LENGTH": { + "description": "1000000 / freq - (2 * pw + ipi)", + "private": true, + "domain": "property", + "value": "1000000 / _value('STI_FREQ') - (2 * _value('STI_PW') + _value('STI_PW_IPI'))" + } + }, + "instruction": { + "start": [ + { + "expression": "len(CHANNEL) > 0", + "raise": "no stimulation channel" + }, + "_data_format('TDC4VC3')", + "set_current", + "_sleep(100)", + "set_parameter", + "_sleep(100)", + "set_channel_enable", + "_sleep(100)", + "VIS_STI", + "_notify(True)", + "_sync(True)" + ], + "set_current": { + "type": "RIS", + "data": [ + "5b11111#header;2b0#GV;12bCURRENT" + ] + }, + "set_parameter": { + "type": "RIS", + "foreach-parameter": { + "parameter": "RAW_CHANNEL", + "variable": [ + "channel" + ] + }, + "data": [ + "5b11111#header;2b01#LV", + "3b>channel", + "1b>PRECISION[channel]", + "3b>STI_MODE[channel]", + "12b>STI_FREQ[channel]", + "10b>STI_PW[channel]", + "10b>STI_PW_IPI[channel]", + "10b>STI_NUM[channel]" + ] + }, + "set_channel_enable": { + "type": "RIS", + "parameter": { + "a0": "1 if 0 in RAW_CHANNEL else 0", + "a1": "1 if 1 in RAW_CHANNEL else 0", + "a2": "1 if 2 in RAW_CHANNEL else 0", + "a3": "1 if 3 in RAW_CHANNEL else 0", + "a4": "1 if 4 in RAW_CHANNEL else 0", + "a5": "1 if 5 in RAW_CHANNEL else 0", + "a6": "1 if 6 in RAW_CHANNEL else 0", + "a7": "1 if 7 in RAW_CHANNEL else 0", + "a8": "1 if 8 in RAW_CHANNEL else 0", + "a9": "1 if 9 in RAW_CHANNEL else 0", + "aa": "1 if 10 in RAW_CHANNEL else 0", + "ab": "1 if 11 in RAW_CHANNEL else 0", + "ac": "1 if 12 in RAW_CHANNEL else 0", + "ad": "1 if 13 in RAW_CHANNEL else 0", + "ae": "1 if 14 in RAW_CHANNEL else 0", + "af": "1 if 15 in RAW_CHANNEL else 0" + }, + "data": [ + "5b11111#header;2b10#CE", + "a0;a1;a2;a3;a4;a5;a6;a7;a8;a9;aa;ab;ac;ad;ae;af" + ] + } + } +} \ No newline at end of file diff --git a/simplelink/ble_sdk_2_02_02_25/src/examples/simple_peripheral/cc26xx/app/headstage/tni/elite.devlib.json b/simplelink/ble_sdk_2_02_02_25/src/examples/simple_peripheral/cc26xx/app/headstage/tni/elite.devlib.json new file mode 100644 index 000000000..7bb311c26 --- /dev/null +++ b/simplelink/ble_sdk_2_02_02_25/src/examples/simple_peripheral/cc26xx/app/headstage/tni/elite.devlib.json @@ -0,0 +1,219 @@ +{ + "name": "Elite", + "version": "0.1", + "match_rule": { + "local_name_pattern": "Elite.*", + "major_product_number": 0, + "minor_product_number": 1, + "major_version_number": 0, + "minor_version_number": 1 + }, + "constant": { + "REC_CHANNEL_COUNT": 16, + "STI_CHANNEL_COUNT": 15, + "ADC_SAMPLE_RATE_LIST": [ + 15, + 25, + 40, + 50, + 100, + 250, + 500, + 1000, + 2500, + 4000, + 5000 + ], + "STI_FREQ_LIST": [ + 15, + 25, + 40, + 50, + 100, + 250, + 500, + 1000, + 2500, + 4000, + 5000 + ] + }, + "parameters": { + "MODE": { + "description": "working mode", + "value": [ + "Recording Mode", + "Stimulation Mode", + "Artifact Mode" + ] + }, + "CHANNEL": { + "description": "record channels", + "record_meta": true, + "domain": { + "set": [ + "REC_CHANNEL_COUNT" + ] + } + }, + "SAMPLE_RATE": { + "alias": "ADC_RATE", + "description": "sampling rate", + "record_meta": true, + "domain": [ + "len(ADC_SAMPLE_RATE_LIST)" + ], + "value": "ADC_SAMPLE_RATE_LIST[VALUE]" + }, + "AMP_GAIN": { + "description": "", + "record_meta": true, + "value": [ + 400, + 1000, + 2000 + ] + }, + "LOW_FREQ_BAND": { + "description": "", + "record_meta": true, + "domain": [ + 7 + ] + }, + "STI_MODE": { + "description": "stimulation mode", + "value": [ + "Positive Pulse", + "Negative Pulse", + "Pos to Neg Pulse", + "Neg to Pos Pulse", + "Arbitrary Waveform" + ] + }, + "STI_VOLT": { + "description": "stimulation voltage", + "domain": [ + 32 + ], + "value": "2 + 3 * VALUE / 31" + }, + "STI_FREQ": { + "description": "stimulation frequency", + "domain": [ + "len(STI_FREQ_LIST)" + ], + "value": "STI_FREQ_LIST[VALUE]" + }, + "STI_PMOS": { + "description": "stimulation PMOS channel", + "domain": [ + "STI_CHANNEL_COUNT" + ], + "guard": "STI_PMOS != STI_NMOS" + }, + "STI_NMOS": { + "description": "stimulation NMOS channel", + "domain": [ + "STI_CHANNEL_COUNT" + ], + "guard": "STI_PMOS != STI_NMOS" + }, + "CHOPPER": { + "description": "", + "domain": "bool" + }, + "FAST_SETTLE": { + "description": "", + "domain": "bool" + } + }, + "instruction": { + "start": [ + { + "expression": "MODE", + "when": { + "0": "start_recording", + "1": "start_stimulation", + "2": "start_artifact" + } + }, + "VIS_STI" + ], + "start_recording": [ + { + "expression": "len(CHANNEL) > 0", + "raise": "no recording channel" + }, + "data_format", + "_notify(True)", + "start_recording0", + "_sync(True)" + ], + "start_artifact": [ + { + "expression": "len(CHANNEL) > 0", + "raise": "no recording channel" + }, + "data_format", + "_notify(True)", + "start_artifact0", + "_sync(True)" + ], + "data_format": [ + "_data_format('TDC4VAF2')" + ], + "start_recording0": { + "type": "RIS", + "foreach-parameter": { + "parameter": "CHANNEL", + "variable": [ + "a", + "b", + "c", + "d" + ] + }, + "data": [ + "3b110#recording header;2bSAMPLE_RATE;1ba?;1bb?;1bc?;1bd?", + "4bSAMPLE_RATE;1ba?;1bb?;1bc?;1bd?", + "4bSTI_FREQ;1bCHOPPER;1bFAST_SETTLE;2b0", + "4b 0", + "raise": "no recording channel" + }, + "_notify(True)", + "start_recording", + "umc_parameter", + "_sync(True)", + "VIS_STI" + ], + "data_format": [ + "_data_format('TDC4VAF2')" + ], + "start_recording": { + "type": "RIS", + "data": [ + "3b101#direct header;2b0#don't care;3b>LOW_FREQ_BAND", + "4b0#don't care;1bCHOPPER;1bFAST_SETTLE", + "5b>STI_VOLT;4b>STI_PMOS", + "4b>STI_NMOS;4b>SAMPLE_RATE" + ] + }, + "umc_parameter": { + "type": "RIS", + "data": [ + "3b001#umc parameter header", + "3b>AMP_GAIN;4b>PULSE_WIDTH", + "6b>STI_TIMES;2b>STI_BEHAVIOR", + "6b>STI_FREQ" + ] + }, + "umc_default": [ + "_set('CHANNEL_NUMBER', 1)", + "_set('SAMPLE_RATE', 9)", + "_set('AMP_GAIN', 3)", + "_set('STI_BEHAVIOR', 1)", + "_set('STI_MODE', 0)", + "_set('STI_NMOS', STI_PMOS + 1)", + "_set('STI_PMOS', 0)", + "_set('STI_NMOS', 1)", + "_set('STI_VOLT', 0)", + "_set('STI_FREQ', 0)", + "_set('STI_TIMES', 0)", + "_set('PULSE_WIDTH', 0)", + "_set('FAST_SETTLE', 0)", + "_set('CHOPPER', 1)", + "data_format", + "_notify(True)", + "umc_default0", + "_sync(True)", + "VIS_STI" + ], + "umc_default0": { + "type": "RIS", + "data": [ + "1B0#load umc default parameter into uni" + ] + } + } +} \ No newline at end of file