From ba0239ca6839605c7ce45d56677bb9a3b782b7f2 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Fri, 28 Jan 2022 14:41:10 -0800 Subject: [PATCH] beep, cmd, config, convert_volt, data, distance, fec, kalman: -Wconversion warnings No bugs noted, just adding casts to resolve -Wconversion warnings. Signed-off-by: Keith Packard --- src/kernel/ao_beep.h | 4 +- src/kernel/ao_cmd.c | 16 +++--- src/kernel/ao_config.c | 95 ++++++++++++++++++++---------------- src/kernel/ao_convert_volt.c | 4 +- src/kernel/ao_data.h | 6 +-- src/kernel/ao_distance.c | 2 +- src/kernel/ao_fec.h | 4 +- src/kernel/ao_fec_rx.c | 6 +-- src/kernel/ao_fec_tx.c | 18 +++---- src/kernel/ao_kalman.c | 4 +- 10 files changed, 84 insertions(+), 75 deletions(-) diff --git a/src/kernel/ao_beep.h b/src/kernel/ao_beep.h index 8141d85a..0e4c6056 100644 --- a/src/kernel/ao_beep.h +++ b/src/kernel/ao_beep.h @@ -38,11 +38,11 @@ #define AO_BEEP_MID_PANIC AO_BEEP_MID_DEFAULT #ifndef AO_BEEP_MAKE_LOW -#define AO_BEEP_MAKE_LOW(m) ((m) * 150 / 94) /* 2500Hz */ +#define AO_BEEP_MAKE_LOW(m) ((uint8_t) ((m) * 150 / 94)) /* 2500Hz */ #endif #ifndef AO_BEEP_MAKE_HIGH -#define AO_BEEP_MAKE_HIGH(m) ((m) * 75 / 94) /* 5000Hz */ +#define AO_BEEP_MAKE_HIGH(m) ((uint8_t) ((m) * 75 / 94)) /* 5000Hz */ #endif #define AO_BEEP_LOW AO_BEEP_MAKE_LOW(AO_BEEP_MID) diff --git a/src/kernel/ao_cmd.c b/src/kernel/ao_cmd.c index 4ae63781..cbee3cd5 100644 --- a/src/kernel/ao_cmd.c +++ b/src/kernel/ao_cmd.c @@ -132,8 +132,8 @@ ao_getnibble(void) void ao_cmd_put16(uint16_t v) { - ao_cmd_put8(v >> 8); - ao_cmd_put8(v); + ao_cmd_put8((uint8_t) (v >> 8)); + ao_cmd_put8((uint8_t) v); } void @@ -160,11 +160,11 @@ int8_t ao_cmd_hexchar(char c) { if ('0' <= c && c <= '9') - return (c - '0'); + return (int8_t) (c - '0'); if ('a' <= c && c <= 'f') - return (c - 'a' + 10); + return (int8_t) (c - 'a' + 10); if ('A' <= c && c <= 'F') - return (c - 'A' + 10); + return (int8_t) (c - 'A' + 10); return -1; } @@ -182,7 +182,7 @@ get_hex(uint8_t lim) ao_cmd_status = ao_cmd_lex_error; break; } - result = (result << 4) | n; + result = (uint32_t) ((result << 4) | (uint32_t) n); ao_cmd_lex(); } return result; @@ -191,7 +191,7 @@ get_hex(uint8_t lim) uint8_t ao_cmd_hexbyte(void) { - return get_hex(2); + return (uint8_t) get_hex(2); } uint32_t @@ -325,7 +325,7 @@ help(void) uint8_t cmd; const struct ao_cmds * cs; const char *h; - uint8_t e; + size_t e; for (cmds = 0; cmds < ao_ncmds; cmds++) { cs = ao_cmds[cmds]; diff --git a/src/kernel/ao_config.c b/src/kernel/ao_config.c index ece60ad3..52d25aec 100644 --- a/src/kernel/ao_config.c +++ b/src/kernel/ao_config.c @@ -76,7 +76,7 @@ uint8_t ao_force_freq; #define AO_CONFIG_DEFAULT_RADIO_POWER 0x60 #endif #define AO_CONFIG_DEFAULT_RADIO_AMP 0 -#define AO_CONFIG_DEFAULT_APRS_SSID (ao_serial_number % 10) +#define AO_CONFIG_DEFAULT_APRS_SSID ((uint8_t) (ao_serial_number % 10)) #define AO_CONFIG_DEFAULT_RADIO_RATE AO_RADIO_RATE_38400 #if HAS_CONFIG_SAVE @@ -176,7 +176,7 @@ _ao_config_get(void) if (minor < 9) memset(&ao_config.aes_key, '\0', AO_AES_LEN); if (minor < 10) - ao_config.frequency = 434550 + ao_config._legacy_radio_channel * 100; + ao_config.frequency = 434550U + ao_config._legacy_radio_channel * 100U; if (minor < 11) ao_config.apogee_lockout = 0; #if AO_PYRO_NUM @@ -386,7 +386,7 @@ ao_config_main_deploy_set(void) if (ao_cmd_status != ao_cmd_success) return; _ao_config_edit_start(); - ao_config.main_deploy = r; + ao_config.main_deploy = (uint16_t) r; _ao_config_edit_finish(); } @@ -449,11 +449,11 @@ ao_config_accel_calibrate_auto(char *orientation) } } #if HAS_IMU - accel_cal_along = accel_along_total >> ACCEL_CALIBRATE_SHIFT; - accel_cal_across = accel_across_total >> ACCEL_CALIBRATE_SHIFT; - accel_cal_through = accel_through_total >> ACCEL_CALIBRATE_SHIFT; + accel_cal_along = (int16_t) (accel_along_total >> ACCEL_CALIBRATE_SHIFT); + accel_cal_across = (int16_t) (accel_across_total >> ACCEL_CALIBRATE_SHIFT); + accel_cal_through = (int16_t) (accel_through_total >> ACCEL_CALIBRATE_SHIFT); #endif - return accel_total >> ACCEL_CALIBRATE_SHIFT; + return (int16_t) (accel_total >> ACCEL_CALIBRATE_SHIFT); } static void @@ -467,10 +467,10 @@ ao_config_accel_calibrate_set(void) int16_t accel_through_up = 0, accel_through_down = 0; #endif - up = ao_cmd_decimal(); + up = (int16_t) ao_cmd_decimal(); if (ao_cmd_status != ao_cmd_success) return; - down = ao_cmd_decimal(); + down = (int16_t) ao_cmd_decimal(); auto_cal = (up == 0 && ao_cmd_status != ao_cmd_success); if (auto_cal) { up = ao_config_accel_calibrate_auto("up"); @@ -496,19 +496,19 @@ ao_config_accel_calibrate_set(void) ao_config.accel_minus_g = down; #if HAS_IMU if (auto_cal) { - ao_config.accel_zero_along = (accel_along_up + accel_along_down) / 2; - ao_config.accel_zero_across = (accel_across_up + accel_across_down) / 2; - ao_config.accel_zero_through = (accel_through_up + accel_through_down) / 2; + ao_config.accel_zero_along = (int16_t) ((accel_along_up + accel_along_down) / 2); + ao_config.accel_zero_across = (int16_t) ((accel_across_up + accel_across_down) / 2); + ao_config.accel_zero_through = (int16_t) ((accel_through_up + accel_through_down) / 2); } else { int16_t v; - v = ao_cmd_decimal(); + v = (int16_t) ao_cmd_decimal(); if (ao_cmd_status == ao_cmd_success) { ao_config.accel_zero_along = v; - v = ao_cmd_decimal(); + v = (int16_t) ao_cmd_decimal(); if (ao_cmd_status == ao_cmd_success) { ao_config.accel_zero_across = v; - v = ao_cmd_decimal(); + v = (int16_t) ao_cmd_decimal(); if (ao_cmd_status == ao_cmd_success) ao_config.accel_zero_through = v; } @@ -533,8 +533,12 @@ ao_config_apogee_delay_set(void) uint32_t r = ao_cmd_decimal(); if (ao_cmd_status != ao_cmd_success) return; + if (r > 255) { + ao_cmd_status = ao_cmd_lex_error; + return; + } _ao_config_edit_start(); - ao_config.apogee_delay = r; + ao_config.apogee_delay = (uint8_t) r; _ao_config_edit_finish(); } @@ -548,11 +552,15 @@ ao_config_apogee_lockout_show(void) static void ao_config_apogee_lockout_set(void) { - uint16_t r = ao_cmd_decimal(); + uint32_t r = ao_cmd_decimal(); if (ao_cmd_status != ao_cmd_success) return; + if (r > 65535) { + ao_cmd_status = ao_cmd_lex_error; + return; + } _ao_config_edit_start(); - ao_config.apogee_lockout = r; + ao_config.apogee_lockout = (uint16_t) r; _ao_config_edit_finish(); } #endif @@ -594,7 +602,7 @@ ao_config_radio_rate_show(void) static void ao_config_radio_rate_set(void) { - uint16_t r = ao_cmd_decimal(); + uint32_t r = ao_cmd_decimal(); if (ao_cmd_status != ao_cmd_success) return; if (AO_RADIO_RATE_MAX < r) { @@ -602,7 +610,7 @@ ao_config_radio_rate_set(void) return; } _ao_config_edit_start(); - ao_config.radio_rate = r; + ao_config.radio_rate = (uint8_t) r; _ao_config_edit_finish(); #if HAS_TELEMETRY ao_telemetry_reset_interval(); @@ -676,11 +684,11 @@ ao_config_ignite_mode_show(void) static void ao_config_ignite_mode_set(void) { - uint16_t r = ao_cmd_decimal(); + uint32_t r = ao_cmd_decimal(); if (ao_cmd_status != ao_cmd_success) return; _ao_config_edit_start(); - ao_config.ignite_mode = r; + ao_config.ignite_mode = (uint8_t) r; _ao_config_edit_finish(); } #endif @@ -695,7 +703,7 @@ ao_config_pad_orientation_show(void) static void ao_config_pad_orientation_set(void) { - uint16_t r = ao_cmd_decimal() & 1; + uint8_t r = ao_cmd_decimal() & 1; if (ao_cmd_status != ao_cmd_success) return; _ao_config_edit_start(); @@ -720,11 +728,11 @@ ao_config_radio_enable_show(void) static void ao_config_radio_enable_set(void) { - uint16_t r = ao_cmd_decimal(); + uint32_t r = ao_cmd_decimal(); if (ao_cmd_status != ao_cmd_success) return; _ao_config_edit_start(); - ao_config.radio_enable = r; + ao_config.radio_enable = r != 0; _ao_config_edit_finish(); #if HAS_TELEMETRY && HAS_RADIO_RATE ao_telemetry_reset_interval(); @@ -774,11 +782,11 @@ ao_config_aprs_show(void) static void ao_config_aprs_set(void) { - uint16_t r = ao_cmd_decimal(); + uint32_t r = ao_cmd_decimal(); if (ao_cmd_status != ao_cmd_success) return; _ao_config_edit_start(); - ao_config.aprs_interval = r; + ao_config.aprs_interval = (uint16_t) r; _ao_config_edit_finish(); ao_telemetry_reset_interval(); } @@ -792,11 +800,11 @@ ao_config_aprs_offset_show(void) static void ao_config_aprs_offset_set(void) { - uint16_t r = ao_cmd_decimal(); + uint32_t r = ao_cmd_decimal(); if (ao_cmd_status != ao_cmd_success) return; _ao_config_edit_start(); - ao_config.aprs_offset = r; + ao_config.aprs_offset = (uint8_t) r; _ao_config_edit_finish(); ao_telemetry_reset_interval(); } @@ -855,11 +863,11 @@ ao_config_beep_show(void) static void ao_config_beep_set(void) { - uint16_t r = ao_cmd_decimal(); + uint32_t r = ao_cmd_decimal(); if (ao_cmd_status != ao_cmd_success) return; _ao_config_edit_start(); - ao_config.mid_beep = r; + ao_config.mid_beep = (uint8_t) r; _ao_config_edit_finish(); } #endif @@ -876,11 +884,12 @@ ao_config_tracker_show(void) static void ao_config_tracker_set(void) { - uint16_t m, i; - m = ao_cmd_decimal(); + uint16_t m; + uint8_t i; + m = (uint16_t) ao_cmd_decimal(); if (ao_cmd_status != ao_cmd_success) return; - i = ao_cmd_decimal(); + i = (uint8_t) ao_cmd_decimal(); if (ao_cmd_status != ao_cmd_success) return; _ao_config_edit_start(); @@ -903,11 +912,11 @@ ao_config_pyro_time_show(void) static void ao_config_pyro_time_set(void) { - uint16_t r = ao_cmd_decimal(); + uint32_t r = ao_cmd_decimal(); if (ao_cmd_status != ao_cmd_success) return; _ao_config_edit_start(); - ao_config.pyro_time = r; + ao_config.pyro_time = (uint16_t) r; _ao_config_edit_finish(); } #endif @@ -923,7 +932,7 @@ ao_config_aprs_ssid_show(void) static void ao_config_aprs_ssid_set(void) { - uint16_t r = ao_cmd_decimal(); + uint32_t r = ao_cmd_decimal(); if (ao_cmd_status != ao_cmd_success) return; if (15 < r) { @@ -931,14 +940,14 @@ ao_config_aprs_ssid_set(void) return; } _ao_config_edit_start(); - ao_config.aprs_ssid = r; + ao_config.aprs_ssid = (uint8_t) r; _ao_config_edit_finish(); } static void ao_config_aprs_format_set(void) { - uint16_t r = ao_cmd_decimal(); + uint32_t r = ao_cmd_decimal(); if (ao_cmd_status != ao_cmd_success) return; _ao_config_edit_start(); @@ -963,11 +972,11 @@ ao_config_pad_box_show(void) static void ao_config_pad_box_set(void) { - uint16_t r = ao_cmd_decimal(); + uint32_t r = ao_cmd_decimal(); if (ao_cmd_status != ao_cmd_success) return; _ao_config_edit_start(); - ao_config.pad_box = r; + ao_config.pad_box = (uint8_t) r; _ao_config_edit_finish(); } @@ -980,11 +989,11 @@ ao_config_pad_idle_show(void) static void ao_config_pad_idle_set(void) { - uint16_t r = ao_cmd_decimal(); + uint32_t r = ao_cmd_decimal(); if (ao_cmd_status != ao_cmd_success) return; _ao_config_edit_start(); - ao_config.pad_idle = r; + ao_config.pad_idle = (uint8_t) r; _ao_config_edit_finish(); } #endif diff --git a/src/kernel/ao_convert_volt.c b/src/kernel/ao_convert_volt.c index 5afedfa5..c5dfd22d 100644 --- a/src/kernel/ao_convert_volt.c +++ b/src/kernel/ao_convert_volt.c @@ -27,7 +27,7 @@ int16_t ao_battery_decivolt(int16_t adc) { - return scale(adc, AO_BATTERY_DIV_PLUS, AO_BATTERY_DIV_MINUS); + return (int16_t) scale(adc, AO_BATTERY_DIV_PLUS, AO_BATTERY_DIV_MINUS); } #endif @@ -35,6 +35,6 @@ ao_battery_decivolt(int16_t adc) int16_t ao_ignite_decivolt(int16_t adc) { - return scale(adc, AO_IGNITE_DIV_PLUS, AO_IGNITE_DIV_MINUS); + return (int16_t) scale(adc, AO_IGNITE_DIV_PLUS, AO_IGNITE_DIV_MINUS); } #endif diff --git a/src/kernel/ao_data.h b/src/kernel/ao_data.h index 1b5f9d10..0f96cb89 100644 --- a/src/kernel/ao_data.h +++ b/src/kernel/ao_data.h @@ -198,7 +198,7 @@ typedef AO_ALT_TYPE alt_t; #define ao_data_pres_cook(packet) ao_ms5607_convert(&packet->ms5607_raw, &packet->ms5607_cooked) #define ao_data_pres(packet) ((packet)->ms5607_cooked.pres) -#define ao_data_temp(packet) ((packet)->ms5607_cooked.temp) +#define ao_data_temp(packet) ((int16_t) (packet)->ms5607_cooked.temp) #define pres_to_altitude(p) ao_pa_to_altitude(p) @@ -331,9 +331,9 @@ typedef int16_t accel_t; #endif #if AO_MMA655X_INVERT -#define ao_data_accel_raw(packet) (AO_ACCEL_INVERT - (packet)->mma655x) +#define ao_data_accel_raw(packet) ((accel_t) (AO_ACCEL_INVERT - (packet)->mma655x)) #else -#define ao_data_accel_raw(packet) ((packet)->mma655x) +#define ao_data_accel_raw(packet) ((accel_t) (packet)->mma655x) #endif #define ao_data_accel_invert(accel) (AO_ACCEL_INVERT - (accel)) diff --git a/src/kernel/ao_distance.c b/src/kernel/ao_distance.c index 481a53c1..d85f20f2 100644 --- a/src/kernel/ao_distance.c +++ b/src/kernel/ao_distance.c @@ -101,7 +101,7 @@ ao_lon_dist(int32_t lon_a, int32_t lon_b) /* check if it's shorter to go the other way around */ if ((lon_a >> 1) < (lon_b >> 1) - (1800000000 >> 1)) - lon_a += 3600000000; + lon_a = (int32_t) ((uint32_t) lon_a + 3600000000UL); lon_dist = ao_dist(lon_a, lon_b); if (c) { if (lon_dist & 0x7f800000) diff --git a/src/kernel/ao_fec.h b/src/kernel/ao_fec.h index 9ccc3af1..40e5b15a 100644 --- a/src/kernel/ao_fec.h +++ b/src/kernel/ao_fec.h @@ -39,10 +39,10 @@ ao_fec_crc_byte(uint8_t byte, uint16_t crc) for (bit = 0; bit < 8; bit++) { if (((crc & 0x8000) >> 8) ^ (byte & 0x80)) - crc = (crc << 1) ^ 0x8005; + crc = (uint16_t) ((crc << 1) ^ 0x8005); else crc = (crc << 1); - byte <<= 1; + byte = (uint8_t) (byte << 1); } return crc; } diff --git a/src/kernel/ao_fec_rx.c b/src/kernel/ao_fec_rx.c index 8e4a8522..ecbb21ac 100644 --- a/src/kernel/ao_fec_rx.c +++ b/src/kernel/ao_fec_rx.c @@ -59,7 +59,7 @@ static const uint8_t ao_interleave_order[] = { }; static inline uint16_t ao_interleave_index(uint16_t i) { - return (i & ~0x1e) | ao_interleave_order[(i & 0x1e) >> 1]; + return (uint16_t) ((i & ~0x1e) | ao_interleave_order[(i & 0x1e) >> 1]); } #define NUM_STATE 8 @@ -262,7 +262,7 @@ ao_fec_decode(const uint8_t *in, uint16_t len, uint8_t *out, uint8_t out_len, ui * the end of the input, in which case * it will be seven. */ - int8_t dist = b - (o + 8); /* distance to last ready-for-writing bit */ + int8_t dist = (int8_t) (b - (o + 8)); /* distance to last ready-for-writing bit */ uint32_t min_cost; /* lowest cost */ uint8_t min_state; /* lowest cost state */ uint8_t byte; @@ -293,7 +293,7 @@ ao_fec_decode(const uint8_t *in, uint16_t len, uint8_t *out, uint8_t out_len, ui printf ("\tbit %3d min_cost %5d old bit %3d old_state %x bits %02x whiten %0x\n", i/2, min_cost, o + 8, min_state, (bits[p][min_state] >> dist) & 0xff, *whiten); #endif - byte = (bits[p][min_state] >> dist) ^ *whiten++; + byte = (uint8_t) ((bits[p][min_state] >> dist) ^ *whiten++); *out++ = byte; if (out_len > 2) crc = ao_fec_crc_byte(byte, crc); diff --git a/src/kernel/ao_fec_tx.c b/src/kernel/ao_fec_tx.c index 3feb1301..8c0e7db4 100644 --- a/src/kernel/ao_fec_tx.c +++ b/src/kernel/ao_fec_tx.c @@ -54,7 +54,7 @@ uint8_t ao_fec_check_crc(const uint8_t *bytes, uint8_t len) { uint16_t computed_crc = ao_fec_crc(bytes, len); - uint16_t received_crc = (bytes[len] << 8) | (bytes[len+1]); + uint16_t received_crc = (uint16_t) ((bytes[len] << 8) | (bytes[len+1])); return computed_crc == received_crc; } @@ -70,8 +70,8 @@ ao_fec_prepare(const uint8_t *in, uint8_t len, uint8_t *extra) uint8_t num_fec; /* Append CRC */ - extra[i++] = crc >> 8; - extra[i++] = crc; + extra[i++] = (uint8_t) (crc >> 8); + extra[i++] = (uint8_t) crc; /* Append FEC -- 1 byte if odd, two bytes if even */ num_fec = 2 - (i & 1); @@ -112,7 +112,7 @@ ao_fec_encode(const uint8_t *in, uint8_t len, uint8_t *out) for (byte = 0; byte < 2; byte++) { if (pair + byte == len) in = extra; - fec |= *in++ ^ *whiten++; + fec |= (uint16_t) (*in++ ^ *whiten++); for (bit = 0; bit < 8; bit++) { encode = encode << 2 | ao_fec_encode_table[fec >> 7]; fec = (fec << 1) & 0x7ff; @@ -126,10 +126,10 @@ ao_fec_encode(const uint8_t *in, uint8_t len, uint8_t *out) interleave = (interleave << 2) | ((encode >> (byte_shift + bit_shift)) & 0x3); } - *out++ = interleave >> 24; - *out++ = interleave >> 16; - *out++ = interleave >> 8; - *out++ = interleave >> 0; + *out++ = (uint8_t) (interleave >> 24); + *out++ = (uint8_t) (interleave >> 16); + *out++ = (uint8_t) (interleave >> 8); + *out++ = (uint8_t) (interleave >> 0); } - return (len + extra_len) * 2; + return (uint8_t) ((len + extra_len) * 2); } diff --git a/src/kernel/ao_kalman.c b/src/kernel/ao_kalman.c index 168812b7..cdf64bec 100644 --- a/src/kernel/ao_kalman.c +++ b/src/kernel/ao_kalman.c @@ -178,7 +178,7 @@ ao_kalman_err_accel(void) accel = (ao_config.accel_plus_g - ao_sample_accel) * ao_accel_scale; /* Can't use ao_accel here as it is the pre-prediction value still */ - ao_error_a = (accel - ao_k_accel) >> 16; + ao_error_a = (ao_v_t) ((accel - ao_k_accel) >> 16); } #if !defined(FORCE_ACCEL) && HAS_BARO @@ -331,5 +331,5 @@ ao_kalman(void) ao_avg_height = (ao_avg_height_scaled + 7) >> 4; else #endif - ao_avg_height = (ao_avg_height_scaled + 63) >> 7; + ao_avg_height = (ao_v_t) ((ao_avg_height_scaled + 63) >> 7); } -- 2.30.2