https://github.com/j123b567/scpi-parser

Dependents:   scpi_sx127x scpi_sx127x_firstTest MLX90418_I2C_master

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?

UserRevisionLine numberNew 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 }