beep, cmd, config, convert_volt, data, distance, fec, kalman: -Wconversion warnings
authorKeith Packard <keithp@keithp.com>
Fri, 28 Jan 2022 22:41:10 +0000 (14:41 -0800)
committerKeith Packard <keithp@keithp.com>
Thu, 17 Feb 2022 01:26:49 +0000 (17:26 -0800)
No bugs noted, just adding casts to resolve -Wconversion warnings.

Signed-off-by: Keith Packard <keithp@keithp.com>
src/kernel/ao_beep.h
src/kernel/ao_cmd.c
src/kernel/ao_config.c
src/kernel/ao_convert_volt.c
src/kernel/ao_data.h
src/kernel/ao_distance.c
src/kernel/ao_fec.h
src/kernel/ao_fec_rx.c
src/kernel/ao_fec_tx.c
src/kernel/ao_kalman.c

index 8141d85a3d7d5b39ec675df4fa77966f096aeef3..0e4c6056a8ed670ba8d3899227aa4186eb3dfa5a 100644 (file)
 #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)
index 4ae63781fcb0900e39acdfc02ad8f737819d4b03..cbee3cd5109cae00f10343519dd7e08540fdc27a 100644 (file)
@@ -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];
index ece60ad355124e4bdcf4a703b6e8434713f82433..52d25aec0b226aca40d6a281f3ef9415b91185c2 100644 (file)
@@ -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
index 5afedfa5bcd5c72c98af9ec0a8e4ed67cdaaa3e6..c5dfd22d0d6bcf6da48744fdee3e1a19c7b4bc38 100644 (file)
@@ -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
index 1b5f9d10ff0897dea9132b760eec5c6eb813d205..0f96cb897bcf521081c89e6007cc56444697ac73 100644 (file)
@@ -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))
 
index 481a53c11c5bbdc14b8392895d221d90d7204368..d85f20f2c85ed36e111c0300a0bdd9f6199ef800 100644 (file)
@@ -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)
index 9ccc3af1d1df0dc28e66194e3271eaee31d1a199..40e5b15a082124dc7b4271fe8031b5d671d735b7 100644 (file)
@@ -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;
 }
index 8e4a852221aac60e869576348acae5bab01dab51..ecbb21ac6847c32ad2f4820df4822f05fc0e1160 100644 (file)
@@ -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);
index 3feb1301fc05905582e5ff5936286531e52a5b26..8c0e7db4f7e51c4f6e7f92d092eacb3c6faa6713 100644 (file)
@@ -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);
 }
index 168812b750aa70c03eeca94fa3a8cd6b20378e62..cdf64bec9052e106fa43cabdbb3015955c9645d2 100644 (file)
@@ -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);
 }