static void test_longToStr() { char str[32]; size_t len; len = SCPI_LongToStr(10, str, 32, 10); CU_ASSERT(len == 2); CU_ASSERT_STRING_EQUAL(str, "10"); CU_ASSERT(str[len] == '\0'); len = SCPI_LongToStr(10, str, 32, 2); CU_ASSERT(len == 4); CU_ASSERT(str[0] == '1'); CU_ASSERT(str[1] == '0'); CU_ASSERT(str[2] == '1'); CU_ASSERT(str[3] == '0'); CU_ASSERT(str[4] == '\0'); len = SCPI_LongToStr(10, str, 32, 16); CU_ASSERT(len == 1); CU_ASSERT(str[0] == 'A'); CU_ASSERT(str[1] == '\0'); len = SCPI_LongToStr(10, str, 32, 8); CU_ASSERT(len == 2); CU_ASSERT(str[0] == '1'); CU_ASSERT(str[1] == '2'); CU_ASSERT(str[2] == '\0'); }
/** * Write arbitrary block program data to the result * @param context * @param data * @param len * @return */ size_t SCPI_ResultArbitraryBlock(scpi_t * context, const char * data, size_t len) { size_t result = 0; char block_header[12]; size_t header_len; block_header[0] = '#'; SCPI_LongToStr(len, block_header + 2, 10, 10); header_len = strlen(block_header + 2); block_header[1] = (char)(header_len + '0'); result += writeData(context, block_header, header_len + 2); result += writeData(context, data, len); context->output_count++; return result; }
/** * Write integer value in specific base to the result * @param context * @param val * @param base * @return */ size_t SCPI_ResultIntBase(scpi_t * context, int32_t val, int8_t base) { char buffer[33]; const char * basePrefix; size_t result = 0; size_t len; len = SCPI_LongToStr(val, buffer, sizeof (buffer), base); basePrefix = getBasePrefix(base); result += writeDelimiter(context); if (basePrefix != NULL) { result += writeData(context, basePrefix, 2); } result += writeData(context, buffer, len); context->output_count++; return result; }