https://github.com/j123b567/scpi-parser
Dependents: scpi_sx127x scpi_sx127x_firstTest MLX90418_I2C_master
src/ieee488.c@1:b497f235115a, 2015-08-07 (annotated)
- Committer:
- dudmuck
- Date:
- Fri Aug 07 21:54:11 2015 +0000
- Revision:
- 1:b497f235115a
- Parent:
- 0:aad43948c45c
update from github commit 6e5e3e0e3fc450eaf53feee059824ad85c4f270d
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
dudmuck | 0:aad43948c45c | 1 | /*- |
dudmuck | 0:aad43948c45c | 2 | * Copyright (c) 2012-2013 Jan Breuer, |
dudmuck | 0:aad43948c45c | 3 | * |
dudmuck | 0:aad43948c45c | 4 | * All Rights Reserved |
dudmuck | 0:aad43948c45c | 5 | * |
dudmuck | 0:aad43948c45c | 6 | * Redistribution and use in source and binary forms, with or without |
dudmuck | 0:aad43948c45c | 7 | * modification, are permitted provided that the following conditions are |
dudmuck | 0:aad43948c45c | 8 | * met: |
dudmuck | 0:aad43948c45c | 9 | * 1. Redistributions of source code must retain the above copyright notice, |
dudmuck | 0:aad43948c45c | 10 | * this list of conditions and the following disclaimer. |
dudmuck | 0:aad43948c45c | 11 | * 2. Redistributions in binary form must reproduce the above copyright |
dudmuck | 0:aad43948c45c | 12 | * notice, this list of conditions and the following disclaimer in the |
dudmuck | 0:aad43948c45c | 13 | * documentation and/or other materials provided with the distribution. |
dudmuck | 0:aad43948c45c | 14 | * |
dudmuck | 0:aad43948c45c | 15 | * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR |
dudmuck | 0:aad43948c45c | 16 | * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
dudmuck | 0:aad43948c45c | 17 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
dudmuck | 0:aad43948c45c | 18 | * DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE |
dudmuck | 0:aad43948c45c | 19 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
dudmuck | 0:aad43948c45c | 20 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
dudmuck | 0:aad43948c45c | 21 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR |
dudmuck | 0:aad43948c45c | 22 | * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, |
dudmuck | 0:aad43948c45c | 23 | * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE |
dudmuck | 0:aad43948c45c | 24 | * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN |
dudmuck | 0:aad43948c45c | 25 | * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
dudmuck | 0:aad43948c45c | 26 | */ |
dudmuck | 0:aad43948c45c | 27 | |
dudmuck | 0:aad43948c45c | 28 | /** |
dudmuck | 0:aad43948c45c | 29 | * @file scpi_ieee488.c |
dudmuck | 0:aad43948c45c | 30 | * @date Thu Nov 15 10:58:45 UTC 2012 |
dudmuck | 0:aad43948c45c | 31 | * |
dudmuck | 0:aad43948c45c | 32 | * @brief Implementation of IEEE488.2 commands and state model |
dudmuck | 0:aad43948c45c | 33 | * |
dudmuck | 0:aad43948c45c | 34 | * |
dudmuck | 0:aad43948c45c | 35 | */ |
dudmuck | 0:aad43948c45c | 36 | |
dudmuck | 0:aad43948c45c | 37 | #include "scpi/parser.h" |
dudmuck | 0:aad43948c45c | 38 | #include "scpi/ieee488.h" |
dudmuck | 0:aad43948c45c | 39 | #include "scpi/error.h" |
dudmuck | 0:aad43948c45c | 40 | #include "scpi/constants.h" |
dudmuck | 0:aad43948c45c | 41 | |
dudmuck | 0:aad43948c45c | 42 | #include <stdio.h> |
dudmuck | 0:aad43948c45c | 43 | |
dudmuck | 0:aad43948c45c | 44 | /** |
dudmuck | 0:aad43948c45c | 45 | * Update register value |
dudmuck | 0:aad43948c45c | 46 | * @param context |
dudmuck | 0:aad43948c45c | 47 | * @param name - register name |
dudmuck | 0:aad43948c45c | 48 | */ |
dudmuck | 0:aad43948c45c | 49 | static void regUpdate(scpi_t * context, scpi_reg_name_t name) { |
dudmuck | 0:aad43948c45c | 50 | SCPI_RegSet(context, name, SCPI_RegGet(context, name)); |
dudmuck | 0:aad43948c45c | 51 | } |
dudmuck | 0:aad43948c45c | 52 | |
dudmuck | 0:aad43948c45c | 53 | /** |
dudmuck | 0:aad43948c45c | 54 | * Update STB register according to value and its mask register |
dudmuck | 0:aad43948c45c | 55 | * @param context |
dudmuck | 0:aad43948c45c | 56 | * @param val value of register |
dudmuck | 0:aad43948c45c | 57 | * @param mask name of mask register (enable register) |
dudmuck | 0:aad43948c45c | 58 | * @param stbBits bits to clear or set in STB |
dudmuck | 0:aad43948c45c | 59 | */ |
dudmuck | 0:aad43948c45c | 60 | static void regUpdateSTB(scpi_t * context, scpi_reg_val_t val, scpi_reg_name_t mask, scpi_reg_val_t stbBits) { |
dudmuck | 0:aad43948c45c | 61 | if (val & SCPI_RegGet(context, mask)) { |
dudmuck | 0:aad43948c45c | 62 | SCPI_RegSetBits(context, SCPI_REG_STB, stbBits); |
dudmuck | 0:aad43948c45c | 63 | } else { |
dudmuck | 0:aad43948c45c | 64 | SCPI_RegClearBits(context, SCPI_REG_STB, stbBits); |
dudmuck | 0:aad43948c45c | 65 | } |
dudmuck | 0:aad43948c45c | 66 | } |
dudmuck | 0:aad43948c45c | 67 | |
dudmuck | 0:aad43948c45c | 68 | /** |
dudmuck | 0:aad43948c45c | 69 | * Get register value |
dudmuck | 0:aad43948c45c | 70 | * @param name - register name |
dudmuck | 0:aad43948c45c | 71 | * @return register value |
dudmuck | 0:aad43948c45c | 72 | */ |
dudmuck | 0:aad43948c45c | 73 | scpi_reg_val_t SCPI_RegGet(scpi_t * context, scpi_reg_name_t name) { |
dudmuck | 0:aad43948c45c | 74 | if ((name < SCPI_REG_COUNT) && (context->registers != NULL)) { |
dudmuck | 0:aad43948c45c | 75 | return context->registers[name]; |
dudmuck | 0:aad43948c45c | 76 | } else { |
dudmuck | 0:aad43948c45c | 77 | return 0; |
dudmuck | 0:aad43948c45c | 78 | } |
dudmuck | 0:aad43948c45c | 79 | } |
dudmuck | 0:aad43948c45c | 80 | |
dudmuck | 0:aad43948c45c | 81 | /** |
dudmuck | 0:aad43948c45c | 82 | * Wrapper function to control interface from context |
dudmuck | 0:aad43948c45c | 83 | * @param context |
dudmuck | 0:aad43948c45c | 84 | * @param ctrl number of controll message |
dudmuck | 0:aad43948c45c | 85 | * @param value value of related register |
dudmuck | 0:aad43948c45c | 86 | */ |
dudmuck | 0:aad43948c45c | 87 | static size_t writeControl(scpi_t * context, scpi_ctrl_name_t ctrl, scpi_reg_val_t val) { |
dudmuck | 0:aad43948c45c | 88 | if (context && context->interface && context->interface->control) { |
dudmuck | 0:aad43948c45c | 89 | return context->interface->control(context, ctrl, val); |
dudmuck | 0:aad43948c45c | 90 | } else { |
dudmuck | 0:aad43948c45c | 91 | return 0; |
dudmuck | 0:aad43948c45c | 92 | } |
dudmuck | 0:aad43948c45c | 93 | } |
dudmuck | 0:aad43948c45c | 94 | |
dudmuck | 0:aad43948c45c | 95 | /** |
dudmuck | 0:aad43948c45c | 96 | * Set register value |
dudmuck | 0:aad43948c45c | 97 | * @param name - register name |
dudmuck | 0:aad43948c45c | 98 | * @param val - new value |
dudmuck | 0:aad43948c45c | 99 | */ |
dudmuck | 0:aad43948c45c | 100 | void SCPI_RegSet(scpi_t * context, scpi_reg_name_t name, scpi_reg_val_t val) { |
dudmuck | 0:aad43948c45c | 101 | scpi_bool_t srq = FALSE; |
dudmuck | 0:aad43948c45c | 102 | scpi_reg_val_t mask; |
dudmuck | 0:aad43948c45c | 103 | scpi_reg_val_t old_val; |
dudmuck | 0:aad43948c45c | 104 | |
dudmuck | 0:aad43948c45c | 105 | if ((name >= SCPI_REG_COUNT) || (context->registers == NULL)) { |
dudmuck | 0:aad43948c45c | 106 | return; |
dudmuck | 0:aad43948c45c | 107 | } |
dudmuck | 0:aad43948c45c | 108 | |
dudmuck | 0:aad43948c45c | 109 | /* store old register value */ |
dudmuck | 0:aad43948c45c | 110 | old_val = context->registers[name]; |
dudmuck | 0:aad43948c45c | 111 | |
dudmuck | 0:aad43948c45c | 112 | /* set register value */ |
dudmuck | 0:aad43948c45c | 113 | context->registers[name] = val; |
dudmuck | 0:aad43948c45c | 114 | |
dudmuck | 0:aad43948c45c | 115 | /** @TODO: remove recutsion */ |
dudmuck | 0:aad43948c45c | 116 | switch (name) { |
dudmuck | 0:aad43948c45c | 117 | case SCPI_REG_STB: |
dudmuck | 0:aad43948c45c | 118 | mask = SCPI_RegGet(context, SCPI_REG_SRE); |
dudmuck | 0:aad43948c45c | 119 | mask &= ~STB_SRQ; |
dudmuck | 0:aad43948c45c | 120 | if (val & mask) { |
dudmuck | 0:aad43948c45c | 121 | val |= STB_SRQ; |
dudmuck | 0:aad43948c45c | 122 | /* avoid sending SRQ if nothing has changed */ |
dudmuck | 0:aad43948c45c | 123 | if (old_val != val) { |
dudmuck | 0:aad43948c45c | 124 | srq = TRUE; |
dudmuck | 0:aad43948c45c | 125 | } |
dudmuck | 0:aad43948c45c | 126 | } else { |
dudmuck | 0:aad43948c45c | 127 | val &= ~STB_SRQ; |
dudmuck | 0:aad43948c45c | 128 | } |
dudmuck | 0:aad43948c45c | 129 | break; |
dudmuck | 0:aad43948c45c | 130 | case SCPI_REG_SRE: |
dudmuck | 0:aad43948c45c | 131 | regUpdate(context, SCPI_REG_STB); |
dudmuck | 0:aad43948c45c | 132 | break; |
dudmuck | 0:aad43948c45c | 133 | case SCPI_REG_ESR: |
dudmuck | 0:aad43948c45c | 134 | regUpdateSTB(context, val, SCPI_REG_ESE, STB_ESR); |
dudmuck | 0:aad43948c45c | 135 | break; |
dudmuck | 0:aad43948c45c | 136 | case SCPI_REG_ESE: |
dudmuck | 0:aad43948c45c | 137 | regUpdate(context, SCPI_REG_ESR); |
dudmuck | 0:aad43948c45c | 138 | break; |
dudmuck | 0:aad43948c45c | 139 | case SCPI_REG_QUES: |
dudmuck | 0:aad43948c45c | 140 | regUpdateSTB(context, val, SCPI_REG_QUESE, STB_QES); |
dudmuck | 0:aad43948c45c | 141 | break; |
dudmuck | 0:aad43948c45c | 142 | case SCPI_REG_QUESE: |
dudmuck | 0:aad43948c45c | 143 | regUpdate(context, SCPI_REG_QUES); |
dudmuck | 0:aad43948c45c | 144 | break; |
dudmuck | 0:aad43948c45c | 145 | case SCPI_REG_OPER: |
dudmuck | 0:aad43948c45c | 146 | regUpdateSTB(context, val, SCPI_REG_OPERE, STB_OPS); |
dudmuck | 0:aad43948c45c | 147 | break; |
dudmuck | 0:aad43948c45c | 148 | case SCPI_REG_OPERE: |
dudmuck | 0:aad43948c45c | 149 | regUpdate(context, SCPI_REG_OPER); |
dudmuck | 0:aad43948c45c | 150 | break; |
dudmuck | 0:aad43948c45c | 151 | |
dudmuck | 0:aad43948c45c | 152 | |
dudmuck | 0:aad43948c45c | 153 | case SCPI_REG_COUNT: |
dudmuck | 0:aad43948c45c | 154 | /* nothing to do */ |
dudmuck | 0:aad43948c45c | 155 | break; |
dudmuck | 0:aad43948c45c | 156 | } |
dudmuck | 0:aad43948c45c | 157 | |
dudmuck | 0:aad43948c45c | 158 | /* set updated register value */ |
dudmuck | 0:aad43948c45c | 159 | context->registers[name] = val; |
dudmuck | 0:aad43948c45c | 160 | |
dudmuck | 0:aad43948c45c | 161 | if (srq) { |
dudmuck | 0:aad43948c45c | 162 | writeControl(context, SCPI_CTRL_SRQ, SCPI_RegGet(context, SCPI_REG_STB)); |
dudmuck | 0:aad43948c45c | 163 | } |
dudmuck | 0:aad43948c45c | 164 | } |
dudmuck | 0:aad43948c45c | 165 | |
dudmuck | 0:aad43948c45c | 166 | /** |
dudmuck | 0:aad43948c45c | 167 | * Set register bits |
dudmuck | 0:aad43948c45c | 168 | * @param name - register name |
dudmuck | 0:aad43948c45c | 169 | * @param bits bit mask |
dudmuck | 0:aad43948c45c | 170 | */ |
dudmuck | 0:aad43948c45c | 171 | void SCPI_RegSetBits(scpi_t * context, scpi_reg_name_t name, scpi_reg_val_t bits) { |
dudmuck | 0:aad43948c45c | 172 | SCPI_RegSet(context, name, SCPI_RegGet(context, name) | bits); |
dudmuck | 0:aad43948c45c | 173 | } |
dudmuck | 0:aad43948c45c | 174 | |
dudmuck | 0:aad43948c45c | 175 | /** |
dudmuck | 0:aad43948c45c | 176 | * Clear register bits |
dudmuck | 0:aad43948c45c | 177 | * @param name - register name |
dudmuck | 0:aad43948c45c | 178 | * @param bits bit mask |
dudmuck | 0:aad43948c45c | 179 | */ |
dudmuck | 0:aad43948c45c | 180 | void SCPI_RegClearBits(scpi_t * context, scpi_reg_name_t name, scpi_reg_val_t bits) { |
dudmuck | 0:aad43948c45c | 181 | SCPI_RegSet(context, name, SCPI_RegGet(context, name) & ~bits); |
dudmuck | 0:aad43948c45c | 182 | } |
dudmuck | 0:aad43948c45c | 183 | |
dudmuck | 0:aad43948c45c | 184 | /** |
dudmuck | 0:aad43948c45c | 185 | * Clear event register |
dudmuck | 0:aad43948c45c | 186 | * @param context |
dudmuck | 0:aad43948c45c | 187 | */ |
dudmuck | 0:aad43948c45c | 188 | void SCPI_EventClear(scpi_t * context) { |
dudmuck | 0:aad43948c45c | 189 | /* TODO */ |
dudmuck | 0:aad43948c45c | 190 | SCPI_RegSet(context, SCPI_REG_ESR, 0); |
dudmuck | 0:aad43948c45c | 191 | } |
dudmuck | 0:aad43948c45c | 192 | |
dudmuck | 0:aad43948c45c | 193 | /** |
dudmuck | 0:aad43948c45c | 194 | * *CLS - This command clears all status data structures in a device. |
dudmuck | 0:aad43948c45c | 195 | * For a device which minimally complies with SCPI. (SCPI std 4.1.3.2) |
dudmuck | 0:aad43948c45c | 196 | * @param context |
dudmuck | 0:aad43948c45c | 197 | * @return |
dudmuck | 0:aad43948c45c | 198 | */ |
dudmuck | 0:aad43948c45c | 199 | scpi_result_t SCPI_CoreCls(scpi_t * context) { |
dudmuck | 0:aad43948c45c | 200 | SCPI_EventClear(context); |
dudmuck | 0:aad43948c45c | 201 | SCPI_ErrorClear(context); |
dudmuck | 0:aad43948c45c | 202 | SCPI_RegSet(context, SCPI_REG_OPER, 0); |
dudmuck | 0:aad43948c45c | 203 | SCPI_RegSet(context, SCPI_REG_QUES, 0); |
dudmuck | 0:aad43948c45c | 204 | return SCPI_RES_OK; |
dudmuck | 0:aad43948c45c | 205 | } |
dudmuck | 0:aad43948c45c | 206 | |
dudmuck | 0:aad43948c45c | 207 | /** |
dudmuck | 0:aad43948c45c | 208 | * *ESE |
dudmuck | 0:aad43948c45c | 209 | * @param context |
dudmuck | 0:aad43948c45c | 210 | * @return |
dudmuck | 0:aad43948c45c | 211 | */ |
dudmuck | 0:aad43948c45c | 212 | scpi_result_t SCPI_CoreEse(scpi_t * context) { |
dudmuck | 0:aad43948c45c | 213 | int32_t new_ESE; |
dudmuck | 0:aad43948c45c | 214 | if (SCPI_ParamInt(context, &new_ESE, TRUE)) { |
dudmuck | 1:b497f235115a | 215 | SCPI_RegSet(context, SCPI_REG_ESE, (scpi_reg_val_t)new_ESE); |
dudmuck | 0:aad43948c45c | 216 | } |
dudmuck | 0:aad43948c45c | 217 | return SCPI_RES_OK; |
dudmuck | 0:aad43948c45c | 218 | } |
dudmuck | 0:aad43948c45c | 219 | |
dudmuck | 0:aad43948c45c | 220 | /** |
dudmuck | 0:aad43948c45c | 221 | * *ESE? |
dudmuck | 0:aad43948c45c | 222 | * @param context |
dudmuck | 0:aad43948c45c | 223 | * @return |
dudmuck | 0:aad43948c45c | 224 | */ |
dudmuck | 0:aad43948c45c | 225 | scpi_result_t SCPI_CoreEseQ(scpi_t * context) { |
dudmuck | 0:aad43948c45c | 226 | SCPI_ResultInt(context, SCPI_RegGet(context, SCPI_REG_ESE)); |
dudmuck | 0:aad43948c45c | 227 | return SCPI_RES_OK; |
dudmuck | 0:aad43948c45c | 228 | } |
dudmuck | 0:aad43948c45c | 229 | |
dudmuck | 0:aad43948c45c | 230 | /** |
dudmuck | 0:aad43948c45c | 231 | * *ESR? |
dudmuck | 0:aad43948c45c | 232 | * @param context |
dudmuck | 0:aad43948c45c | 233 | * @return |
dudmuck | 0:aad43948c45c | 234 | */ |
dudmuck | 0:aad43948c45c | 235 | scpi_result_t SCPI_CoreEsrQ(scpi_t * context) { |
dudmuck | 0:aad43948c45c | 236 | SCPI_ResultInt(context, SCPI_RegGet(context, SCPI_REG_ESR)); |
dudmuck | 0:aad43948c45c | 237 | SCPI_RegSet(context, SCPI_REG_ESR, 0); |
dudmuck | 0:aad43948c45c | 238 | return SCPI_RES_OK; |
dudmuck | 0:aad43948c45c | 239 | } |
dudmuck | 0:aad43948c45c | 240 | |
dudmuck | 0:aad43948c45c | 241 | /** |
dudmuck | 0:aad43948c45c | 242 | * *IDN? |
dudmuck | 0:aad43948c45c | 243 | * |
dudmuck | 0:aad43948c45c | 244 | * field1: MANUFACTURE |
dudmuck | 0:aad43948c45c | 245 | * field2: MODEL |
dudmuck | 0:aad43948c45c | 246 | * field4: SUBSYSTEMS REVISIONS |
dudmuck | 0:aad43948c45c | 247 | * |
dudmuck | 0:aad43948c45c | 248 | * example: MANUFACTURE,MODEL,0,01-02-01 |
dudmuck | 0:aad43948c45c | 249 | * @param context |
dudmuck | 0:aad43948c45c | 250 | * @return |
dudmuck | 0:aad43948c45c | 251 | */ |
dudmuck | 0:aad43948c45c | 252 | scpi_result_t SCPI_CoreIdnQ(scpi_t * context) { |
dudmuck | 1:b497f235115a | 253 | int i; |
dudmuck | 1:b497f235115a | 254 | for (i = 0; i<4; i++) { |
dudmuck | 1:b497f235115a | 255 | if (context->idn[i]) { |
dudmuck | 1:b497f235115a | 256 | SCPI_ResultMnemonic(context, context->idn[i]); |
dudmuck | 1:b497f235115a | 257 | } else { |
dudmuck | 1:b497f235115a | 258 | SCPI_ResultMnemonic(context, "0"); |
dudmuck | 1:b497f235115a | 259 | } |
dudmuck | 1:b497f235115a | 260 | } |
dudmuck | 0:aad43948c45c | 261 | return SCPI_RES_OK; |
dudmuck | 0:aad43948c45c | 262 | } |
dudmuck | 0:aad43948c45c | 263 | |
dudmuck | 0:aad43948c45c | 264 | /** |
dudmuck | 0:aad43948c45c | 265 | * *OPC |
dudmuck | 0:aad43948c45c | 266 | * @param context |
dudmuck | 0:aad43948c45c | 267 | * @return |
dudmuck | 0:aad43948c45c | 268 | */ |
dudmuck | 0:aad43948c45c | 269 | scpi_result_t SCPI_CoreOpc(scpi_t * context) { |
dudmuck | 0:aad43948c45c | 270 | SCPI_RegSetBits(context, SCPI_REG_ESR, ESR_OPC); |
dudmuck | 0:aad43948c45c | 271 | return SCPI_RES_OK; |
dudmuck | 0:aad43948c45c | 272 | } |
dudmuck | 0:aad43948c45c | 273 | |
dudmuck | 0:aad43948c45c | 274 | /** |
dudmuck | 0:aad43948c45c | 275 | * *OPC? |
dudmuck | 0:aad43948c45c | 276 | * @param context |
dudmuck | 0:aad43948c45c | 277 | * @return |
dudmuck | 0:aad43948c45c | 278 | */ |
dudmuck | 0:aad43948c45c | 279 | scpi_result_t SCPI_CoreOpcQ(scpi_t * context) { |
dudmuck | 0:aad43948c45c | 280 | /* Operation is always completed */ |
dudmuck | 0:aad43948c45c | 281 | SCPI_ResultInt(context, 1); |
dudmuck | 0:aad43948c45c | 282 | return SCPI_RES_OK; |
dudmuck | 0:aad43948c45c | 283 | } |
dudmuck | 0:aad43948c45c | 284 | |
dudmuck | 0:aad43948c45c | 285 | /** |
dudmuck | 0:aad43948c45c | 286 | * *RST |
dudmuck | 0:aad43948c45c | 287 | * @param context |
dudmuck | 0:aad43948c45c | 288 | * @return |
dudmuck | 0:aad43948c45c | 289 | */ |
dudmuck | 0:aad43948c45c | 290 | scpi_result_t SCPI_CoreRst(scpi_t * context) { |
dudmuck | 0:aad43948c45c | 291 | if (context && context->interface && context->interface->reset) { |
dudmuck | 0:aad43948c45c | 292 | return context->interface->reset(context); |
dudmuck | 0:aad43948c45c | 293 | } |
dudmuck | 0:aad43948c45c | 294 | return SCPI_RES_OK; |
dudmuck | 0:aad43948c45c | 295 | } |
dudmuck | 0:aad43948c45c | 296 | |
dudmuck | 0:aad43948c45c | 297 | /** |
dudmuck | 0:aad43948c45c | 298 | * *SRE |
dudmuck | 0:aad43948c45c | 299 | * @param context |
dudmuck | 0:aad43948c45c | 300 | * @return |
dudmuck | 0:aad43948c45c | 301 | */ |
dudmuck | 0:aad43948c45c | 302 | scpi_result_t SCPI_CoreSre(scpi_t * context) { |
dudmuck | 0:aad43948c45c | 303 | int32_t new_SRE; |
dudmuck | 0:aad43948c45c | 304 | if (SCPI_ParamInt(context, &new_SRE, TRUE)) { |
dudmuck | 1:b497f235115a | 305 | SCPI_RegSet(context, SCPI_REG_SRE, (scpi_reg_val_t)new_SRE); |
dudmuck | 0:aad43948c45c | 306 | } |
dudmuck | 0:aad43948c45c | 307 | return SCPI_RES_OK; |
dudmuck | 0:aad43948c45c | 308 | } |
dudmuck | 0:aad43948c45c | 309 | |
dudmuck | 0:aad43948c45c | 310 | /** |
dudmuck | 0:aad43948c45c | 311 | * *SRE? |
dudmuck | 0:aad43948c45c | 312 | * @param context |
dudmuck | 0:aad43948c45c | 313 | * @return |
dudmuck | 0:aad43948c45c | 314 | */ |
dudmuck | 0:aad43948c45c | 315 | scpi_result_t SCPI_CoreSreQ(scpi_t * context) { |
dudmuck | 0:aad43948c45c | 316 | SCPI_ResultInt(context, SCPI_RegGet(context, SCPI_REG_SRE)); |
dudmuck | 0:aad43948c45c | 317 | return SCPI_RES_OK; |
dudmuck | 0:aad43948c45c | 318 | } |
dudmuck | 0:aad43948c45c | 319 | |
dudmuck | 0:aad43948c45c | 320 | /** |
dudmuck | 0:aad43948c45c | 321 | * *STB? |
dudmuck | 0:aad43948c45c | 322 | * @param context |
dudmuck | 0:aad43948c45c | 323 | * @return |
dudmuck | 0:aad43948c45c | 324 | */ |
dudmuck | 0:aad43948c45c | 325 | scpi_result_t SCPI_CoreStbQ(scpi_t * context) { |
dudmuck | 0:aad43948c45c | 326 | SCPI_ResultInt(context, SCPI_RegGet(context, SCPI_REG_STB)); |
dudmuck | 0:aad43948c45c | 327 | return SCPI_RES_OK; |
dudmuck | 0:aad43948c45c | 328 | } |
dudmuck | 0:aad43948c45c | 329 | |
dudmuck | 0:aad43948c45c | 330 | /** |
dudmuck | 0:aad43948c45c | 331 | * *TST? |
dudmuck | 0:aad43948c45c | 332 | * @param context |
dudmuck | 0:aad43948c45c | 333 | * @return |
dudmuck | 0:aad43948c45c | 334 | */ |
dudmuck | 0:aad43948c45c | 335 | scpi_result_t SCPI_CoreTstQ(scpi_t * context) { |
dudmuck | 1:b497f235115a | 336 | (void) context; |
dudmuck | 1:b497f235115a | 337 | SCPI_ResultInt(context, 0); |
dudmuck | 0:aad43948c45c | 338 | return SCPI_RES_OK; |
dudmuck | 0:aad43948c45c | 339 | } |
dudmuck | 0:aad43948c45c | 340 | |
dudmuck | 0:aad43948c45c | 341 | /** |
dudmuck | 0:aad43948c45c | 342 | * *WAI |
dudmuck | 0:aad43948c45c | 343 | * @param context |
dudmuck | 0:aad43948c45c | 344 | * @return |
dudmuck | 0:aad43948c45c | 345 | */ |
dudmuck | 0:aad43948c45c | 346 | scpi_result_t SCPI_CoreWai(scpi_t * context) { |
dudmuck | 0:aad43948c45c | 347 | (void) context; |
dudmuck | 0:aad43948c45c | 348 | /* NOP */ |
dudmuck | 0:aad43948c45c | 349 | return SCPI_RES_OK; |
dudmuck | 0:aad43948c45c | 350 | } |