static scpi_result_t TEST_ArbQ(scpi_t * context) { const char * data; size_t len; SCPI_ParamArbitraryBlock(context, &data, &len, FALSE); SCPI_ResultArbitraryBlock(context, data, len); return SCPI_RES_OK; }
/** * Result binary array and swap bytes if needed (native endiannes != required endiannes) * @param context * @param array * @param count * @param item_size * @param format * @return */ static size_t parserResultArrayBinary(scpi_t * context, const void * array, size_t count, size_t item_size, scpi_array_format_t format) { if (SCPI_GetNativeFormat() == format) { switch (item_size) { case 1: case 2: case 4: case 8: return SCPI_ResultArbitraryBlock(context, array, count * item_size); default: SCPI_ErrorPush(context, SCPI_ERROR_SYSTEM_ERROR); return 0; } } else { size_t result = 0; size_t i; switch (item_size) { case 1: case 2: case 4: case 8: result += SCPI_ResultArbitraryBlockHeader(context, count * item_size); break; default: SCPI_ErrorPush(context, SCPI_ERROR_SYSTEM_ERROR); return 0; } switch (item_size) { case 1: result += SCPI_ResultArbitraryBlockData(context, array, count); break; case 2: for (i = 0; i < count; i++) { uint16_t val = SCPI_Swap16(((uint16_t*) array)[i]); result += SCPI_ResultArbitraryBlockData(context, &val, item_size); } break; case 4: for (i = 0; i < count; i++) { uint32_t val = SCPI_Swap32(((uint32_t*) array)[i]); result += SCPI_ResultArbitraryBlockData(context, &val, item_size); } break; case 8: for (i = 0; i < count; i++) { uint64_t val = SCPI_Swap64(((uint64_t*) array)[i]); result += SCPI_ResultArbitraryBlockData(context, &val, item_size); } break; } return result; } }