# HG changeset patch # User Mychaela Falconia # Date 1495394531 0 # Node ID aeffe53e110d3b43b9ce2f19d3a56ebd7a6e85a2 # Parent 34a66394bea033ac23dc858658cf72b38c9e0091 fc-cmu200d: freq-meas works diff -r 34a66394bea0 -r aeffe53e110d cmu200/sercmd.c --- a/cmu200/sercmd.c Sun May 21 18:57:44 2017 +0000 +++ b/cmu200/sercmd.c Sun May 21 19:22:11 2017 +0000 @@ -44,15 +44,37 @@ break; } instrument_response[pos-1] = '\0'; + if (pos >= 2 && instrument_response[pos-2] == '\r') + instrument_response[pos-2] = '\0'; printf("Instrument response: %s\n", instrument_response); } collect_staropc_response() { collect_instr_response(); - if (instrument_response[0] != '1' || - instrument_response[1] && !isspace(instrument_response[1])) { + if (instrument_response[0] != '1' || instrument_response[1]) { fprintf(stderr, "error: unexpected response to *OPC?\n"); exit(1); } } + +parse_commasep_response(argv, expect_count) + char **argv; +{ + char *cp, *sp; + int i; + + cp = instrument_response; + for (i = 0; i < expect_count - 1; i++) { + argv[i] = cp; + sp = index(cp, ','); + if (!sp) + return(-1); + *sp = '\0'; + cp = sp + 1; + } + argv[i] = cp; + if (index(cp, ',')) + return(-1); + return(0); +} diff -r 34a66394bea0 -r aeffe53e110d cmu200/vcxocal.c --- a/cmu200/vcxocal.c Sun May 21 18:57:44 2017 +0000 +++ b/cmu200/vcxocal.c Sun May 21 19:22:11 2017 +0000 @@ -51,13 +51,21 @@ cmd_freq_meas() { + char *resp_fields[11]; + char client_resp[128]; + if (current_mode != OP_MODE_VCXO_CAL) { send_socket_response("-Wrong mode\n"); return(0); } send_scpi_cmd("READ:MOD?\n"); collect_instr_response(); - /* response parsing and freq offset extraction to be implemented */ - send_socket_response("+ TBD\n"); + if (parse_commasep_response(resp_fields, 11) < 0) { + send_socket_response + ("-CMU200 response has wrong number of fields\n"); + return(0); + } + sprintf(client_resp, "+ %s\n", resp_fields[7]); + send_socket_response(client_resp); return(0); }