mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-05-13 05:48:35 -07:00
Merge branch 'fz-dev' into dev
This commit is contained in:
@@ -149,7 +149,7 @@ static UpdateManifest* flipper_update_process_manifest(const FuriString* manifes
|
||||
|
||||
do {
|
||||
uint16_t size_read = 0;
|
||||
if(f_read(&file, manifest_data + bytes_read, MAX_READ, &size_read) != FR_OK) {
|
||||
if(f_read(&file, manifest_data + bytes_read, MAX_READ, &size_read) != FR_OK) { //-V769
|
||||
break;
|
||||
}
|
||||
bytes_read += size_read;
|
||||
|
||||
@@ -456,17 +456,15 @@ BleGlueCommandResult ble_glue_fus_get_status() {
|
||||
|
||||
BleGlueCommandResult ble_glue_fus_wait_operation() {
|
||||
furi_check(ble_glue->c2_info.mode == BleGlueC2ModeFUS);
|
||||
bool wip;
|
||||
do {
|
||||
BleGlueCommandResult fus_status = ble_glue_fus_get_status();
|
||||
if(fus_status == BleGlueCommandResultError) {
|
||||
return BleGlueCommandResultError;
|
||||
}
|
||||
wip = fus_status == BleGlueCommandResultOperationOngoing;
|
||||
if(wip) {
|
||||
furi_delay_ms(20);
|
||||
}
|
||||
} while(wip);
|
||||
|
||||
return BleGlueCommandResultOK;
|
||||
while(true) {
|
||||
BleGlueCommandResult fus_status = ble_glue_fus_get_status();
|
||||
if(fus_status == BleGlueCommandResultOperationOngoing) {
|
||||
furi_delay_ms(20);
|
||||
} else if(fus_status == BleGlueCommandResultError) {
|
||||
return BleGlueCommandResultError;
|
||||
} else {
|
||||
return BleGlueCommandResultOK;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -227,7 +227,7 @@ SVCCTL_UserEvtFlowStatus_t SVCCTL_App_Notification(void* pckt) {
|
||||
case EVT_BLUE_GAP_NUMERIC_COMPARISON_VALUE: {
|
||||
uint32_t pin =
|
||||
((aci_gap_numeric_comparison_value_event_rp0*)(blue_evt->data))->Numeric_Value;
|
||||
FURI_LOG_I(TAG, "Verify numeric comparison: %06ld", pin);
|
||||
FURI_LOG_I(TAG, "Verify numeric comparison: %06lu", pin);
|
||||
GapEvent event = {.type = GapEventTypePinCodeVerify, .data.pin_code = pin};
|
||||
bool result = gap->on_event_cb(event, gap->context);
|
||||
aci_gap_numeric_comparison_value_confirm_yesno(gap->service.connection_handle, result);
|
||||
@@ -245,7 +245,7 @@ SVCCTL_UserEvtFlowStatus_t SVCCTL_App_Notification(void* pckt) {
|
||||
} else {
|
||||
FURI_LOG_I(TAG, "Pairing complete");
|
||||
GapEvent event = {.type = GapEventTypeConnected};
|
||||
gap->on_event_cb(event, gap->context);
|
||||
gap->on_event_cb(event, gap->context); //-V595
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
@@ -87,7 +87,7 @@ void hid_svc_start() {
|
||||
|
||||
#if(HID_SVC_REPORT_COUNT != 0)
|
||||
for(uint8_t i = 0; i < HID_SVC_REPORT_COUNT; i++) {
|
||||
if(i < HID_SVC_INPUT_REPORT_COUNT) {
|
||||
if(i < HID_SVC_INPUT_REPORT_COUNT) { //-V547
|
||||
uint8_t buf[2] = {i + 1, 1}; // 1 input
|
||||
char_uuid.Char_UUID_16 = REPORT_CHAR_UUID;
|
||||
status = aci_gatt_add_char(
|
||||
|
||||
@@ -24,9 +24,9 @@
|
||||
/* Global variables ---------------------------------------------------------*/
|
||||
/* Private defines -----------------------------------------------------------*/
|
||||
#define HW_IPCC_TX_PENDING(channel) \
|
||||
(!(LL_C1_IPCC_IsActiveFlag_CHx(IPCC, channel))) && (((~(IPCC->C1MR)) & (channel << 16U)))
|
||||
(!(LL_C1_IPCC_IsActiveFlag_CHx(IPCC, channel))) && (((~(IPCC->C1MR)) & ((channel) << 16U)))
|
||||
#define HW_IPCC_RX_PENDING(channel) \
|
||||
(LL_C2_IPCC_IsActiveFlag_CHx(IPCC, channel)) && (((~(IPCC->C1MR)) & (channel << 0U)))
|
||||
(LL_C2_IPCC_IsActiveFlag_CHx(IPCC, channel)) && (((~(IPCC->C1MR)) & ((channel) << 0U)))
|
||||
|
||||
/* Private macros ------------------------------------------------------------*/
|
||||
/* Private typedef -----------------------------------------------------------*/
|
||||
|
||||
@@ -405,9 +405,9 @@ uint8_t BSP_SD_GetCardInfo(SD_CardInfo* pCardInfo) {
|
||||
pCardInfo->LogBlockNbr = (pCardInfo->CardCapacity) / (pCardInfo->LogBlockSize);
|
||||
} else {
|
||||
pCardInfo->CardCapacity = (pCardInfo->Csd.version.v1.DeviceSize + 1);
|
||||
pCardInfo->CardCapacity *= (1 << (pCardInfo->Csd.version.v1.DeviceSizeMul + 2));
|
||||
pCardInfo->CardCapacity *= (1UL << (pCardInfo->Csd.version.v1.DeviceSizeMul + 2));
|
||||
pCardInfo->LogBlockSize = 512;
|
||||
pCardInfo->CardBlockSize = 1 << (pCardInfo->Csd.RdBlockLen);
|
||||
pCardInfo->CardBlockSize = 1UL << (pCardInfo->Csd.RdBlockLen);
|
||||
pCardInfo->CardCapacity *= pCardInfo->CardBlockSize;
|
||||
pCardInfo->LogBlockNbr = (pCardInfo->CardCapacity) / (pCardInfo->LogBlockSize);
|
||||
}
|
||||
@@ -982,7 +982,8 @@ uint8_t SD_GoIdleState(void) {
|
||||
SD_IO_WriteByte(SD_DUMMY_BYTE);
|
||||
|
||||
/* Send ACMD41 (SD_CMD_SD_APP_OP_COND) to initialize SDHC or SDXC cards: R1 response (0x00: no errors) */
|
||||
response = SD_SendCmd(SD_CMD_SD_APP_OP_COND, 0x00000000, 0xFF, SD_ANSWER_R1_EXPECTED);
|
||||
response = //-V519
|
||||
SD_SendCmd(SD_CMD_SD_APP_OP_COND, 0x00000000, 0xFF, SD_ANSWER_R1_EXPECTED);
|
||||
SD_IO_CSState(1);
|
||||
SD_IO_WriteByte(SD_DUMMY_BYTE);
|
||||
if(counter >= SD_MAX_TRY) {
|
||||
@@ -1001,7 +1002,8 @@ uint8_t SD_GoIdleState(void) {
|
||||
SD_IO_WriteByte(SD_DUMMY_BYTE);
|
||||
|
||||
/* Send ACMD41 (SD_CMD_SD_APP_OP_COND) to initialize SDHC or SDXC cards: R1 response (0x00: no errors) */
|
||||
response = SD_SendCmd(SD_CMD_SD_APP_OP_COND, 0x40000000, 0xFF, SD_ANSWER_R1_EXPECTED);
|
||||
response = //-V519
|
||||
SD_SendCmd(SD_CMD_SD_APP_OP_COND, 0x40000000, 0xFF, SD_ANSWER_R1_EXPECTED);
|
||||
SD_IO_CSState(1);
|
||||
SD_IO_WriteByte(SD_DUMMY_BYTE);
|
||||
if(counter >= SD_MAX_TRY) {
|
||||
|
||||
@@ -415,7 +415,7 @@ float furi_hal_bt_get_rssi() {
|
||||
val += 6.0;
|
||||
rssi >>= 1;
|
||||
}
|
||||
val += (417 * rssi + 18080) >> 10;
|
||||
val += (float)((417 * rssi + 18080) >> 10);
|
||||
}
|
||||
return val;
|
||||
}
|
||||
|
||||
@@ -216,7 +216,7 @@ bool furi_hal_bt_hid_kb_release_all() {
|
||||
|
||||
bool furi_hal_bt_hid_consumer_key_press(uint16_t button) {
|
||||
furi_assert(consumer_report);
|
||||
for(uint8_t i = 0; i < FURI_HAL_BT_HID_CONSUMER_MAX_KEYS; i++) {
|
||||
for(uint8_t i = 0; i < FURI_HAL_BT_HID_CONSUMER_MAX_KEYS; i++) { //-V1008
|
||||
if(consumer_report->key[i] == 0) {
|
||||
consumer_report->key[i] = button;
|
||||
break;
|
||||
@@ -228,7 +228,7 @@ bool furi_hal_bt_hid_consumer_key_press(uint16_t button) {
|
||||
|
||||
bool furi_hal_bt_hid_consumer_key_release(uint16_t button) {
|
||||
furi_assert(consumer_report);
|
||||
for(uint8_t i = 0; i < FURI_HAL_BT_HID_CONSUMER_MAX_KEYS; i++) {
|
||||
for(uint8_t i = 0; i < FURI_HAL_BT_HID_CONSUMER_MAX_KEYS; i++) { //-V1008
|
||||
if(consumer_report->key[i] == button) {
|
||||
consumer_report->key[i] = 0;
|
||||
break;
|
||||
@@ -240,7 +240,7 @@ bool furi_hal_bt_hid_consumer_key_release(uint16_t button) {
|
||||
|
||||
bool furi_hal_bt_hid_consumer_key_release_all() {
|
||||
furi_assert(consumer_report);
|
||||
for(uint8_t i = 0; i < FURI_HAL_BT_HID_CONSUMER_MAX_KEYS; i++) {
|
||||
for(uint8_t i = 0; i < FURI_HAL_BT_HID_CONSUMER_MAX_KEYS; i++) { //-V1008
|
||||
consumer_report->key[i] = 0;
|
||||
}
|
||||
return hid_svc_update_input_report(
|
||||
|
||||
@@ -108,7 +108,7 @@ void furi_hal_i2c_bus_handle_power_event(
|
||||
GpioSpeedLow,
|
||||
GpioAltFn4I2C1);
|
||||
|
||||
LL_I2C_InitTypeDef I2C_InitStruct = {0};
|
||||
LL_I2C_InitTypeDef I2C_InitStruct;
|
||||
I2C_InitStruct.PeripheralMode = LL_I2C_MODE_I2C;
|
||||
I2C_InitStruct.AnalogFilter = LL_I2C_ANALOGFILTER_ENABLE;
|
||||
I2C_InitStruct.DigitalFilter = 0;
|
||||
@@ -152,7 +152,7 @@ void furi_hal_i2c_bus_handle_external_event(
|
||||
furi_hal_gpio_init_ex(
|
||||
&gpio_ext_pc1, GpioModeAltFunctionOpenDrain, GpioPullNo, GpioSpeedLow, GpioAltFn4I2C3);
|
||||
|
||||
LL_I2C_InitTypeDef I2C_InitStruct = {0};
|
||||
LL_I2C_InitTypeDef I2C_InitStruct;
|
||||
I2C_InitStruct.PeripheralMode = LL_I2C_MODE_I2C;
|
||||
I2C_InitStruct.AnalogFilter = LL_I2C_ANALOGFILTER_ENABLE;
|
||||
I2C_InitStruct.DigitalFilter = 0;
|
||||
|
||||
@@ -55,9 +55,9 @@ void furi_hal_memory_init() {
|
||||
memory->region[SRAM_B].size = sram2b_unprotected_size;
|
||||
|
||||
FURI_LOG_I(
|
||||
TAG, "SRAM2A: 0x%p, %ld", memory->region[SRAM_A].start, memory->region[SRAM_A].size);
|
||||
TAG, "SRAM2A: 0x%p, %lu", memory->region[SRAM_A].start, memory->region[SRAM_A].size);
|
||||
FURI_LOG_I(
|
||||
TAG, "SRAM2B: 0x%p, %ld", memory->region[SRAM_B].start, memory->region[SRAM_B].size);
|
||||
TAG, "SRAM2B: 0x%p, %lu", memory->region[SRAM_B].start, memory->region[SRAM_B].size);
|
||||
|
||||
if((memory->region[SRAM_A].size > 0) || (memory->region[SRAM_B].size > 0)) {
|
||||
if((memory->region[SRAM_A].size > 0)) {
|
||||
@@ -120,4 +120,4 @@ size_t furi_hal_memory_max_pool_block() {
|
||||
}
|
||||
}
|
||||
return max;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -425,7 +425,7 @@ bool furi_hal_nfc_emulate_nfca(
|
||||
buff_rx_len = 0;
|
||||
buff_tx_len = 0;
|
||||
uint32_t flag = furi_event_flag_wait(event, EVENT_FLAG_ALL, FuriFlagWaitAny, timeout);
|
||||
if(flag == FuriFlagErrorTimeout || flag == EVENT_FLAG_STOP) {
|
||||
if(flag == (unsigned)FuriFlagErrorTimeout || flag == EVENT_FLAG_STOP) {
|
||||
break;
|
||||
}
|
||||
bool data_received = false;
|
||||
@@ -609,9 +609,9 @@ static uint16_t furi_hal_nfc_data_and_parity_to_bitstream(
|
||||
out[curr_bit_pos / 8] = next_par_bit;
|
||||
curr_bit_pos++;
|
||||
} else {
|
||||
out[curr_bit_pos / 8] |= data[i] << curr_bit_pos % 8;
|
||||
out[curr_bit_pos / 8] |= data[i] << (curr_bit_pos % 8);
|
||||
out[curr_bit_pos / 8 + 1] = data[i] >> (8 - curr_bit_pos % 8);
|
||||
out[curr_bit_pos / 8 + 1] |= next_par_bit << curr_bit_pos % 8;
|
||||
out[curr_bit_pos / 8 + 1] |= next_par_bit << (curr_bit_pos % 8);
|
||||
curr_bit_pos += 9;
|
||||
}
|
||||
}
|
||||
@@ -635,7 +635,7 @@ uint16_t furi_hal_nfc_bitstream_to_data_and_parity(
|
||||
uint16_t bit_processed = 0;
|
||||
memset(out_parity, 0, in_buff_bits / 9);
|
||||
while(bit_processed < in_buff_bits) {
|
||||
out_data[curr_byte] = in_buff[bit_processed / 8] >> bit_processed % 8;
|
||||
out_data[curr_byte] = in_buff[bit_processed / 8] >> (bit_processed % 8);
|
||||
out_data[curr_byte] |= in_buff[bit_processed / 8 + 1] << (8 - bit_processed % 8);
|
||||
out_parity[curr_byte / 8] |= FURI_BIT(in_buff[bit_processed / 8 + 1], bit_processed % 8)
|
||||
<< (7 - curr_byte % 8);
|
||||
@@ -802,4 +802,4 @@ FuriHalNfcReturn furi_hal_nfc_ll_txrx_bits(
|
||||
|
||||
void furi_hal_nfc_ll_poll() {
|
||||
rfalWorker();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,8 +15,8 @@
|
||||
#define FURI_HAL_IDLE_TIMER_CLK_HZ 32768
|
||||
#define FURI_HAL_OS_TICK_HZ configTICK_RATE_HZ
|
||||
|
||||
#define FURI_HAL_OS_IDLE_CNT_TO_TICKS(x) ((x * FURI_HAL_OS_TICK_HZ) / FURI_HAL_IDLE_TIMER_CLK_HZ)
|
||||
#define FURI_HAL_OS_TICKS_TO_IDLE_CNT(x) ((x * FURI_HAL_IDLE_TIMER_CLK_HZ) / FURI_HAL_OS_TICK_HZ)
|
||||
#define FURI_HAL_OS_IDLE_CNT_TO_TICKS(x) (((x)*FURI_HAL_OS_TICK_HZ) / FURI_HAL_IDLE_TIMER_CLK_HZ)
|
||||
#define FURI_HAL_OS_TICKS_TO_IDLE_CNT(x) (((x)*FURI_HAL_IDLE_TIMER_CLK_HZ) / FURI_HAL_OS_TICK_HZ)
|
||||
|
||||
#define FURI_HAL_IDLE_TIMER_TICK_PER_EPOCH (FURI_HAL_OS_IDLE_CNT_TO_TICKS(FURI_HAL_IDLE_TIMER_MAX))
|
||||
#define FURI_HAL_OS_MAX_SLEEP (FURI_HAL_IDLE_TIMER_TICK_PER_EPOCH - 1)
|
||||
|
||||
@@ -110,7 +110,7 @@ void furi_hal_pwm_set_params(FuriHalPwmOutputId channel, uint32_t freq, uint8_t
|
||||
bool clock_lse = false;
|
||||
|
||||
do {
|
||||
period = freq_div / (1 << prescaler);
|
||||
period = freq_div / (1UL << prescaler);
|
||||
if(period <= 0xFFFF) {
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -154,7 +154,7 @@ void furi_hal_rtc_deinit_early() {
|
||||
}
|
||||
|
||||
void furi_hal_rtc_init() {
|
||||
LL_RTC_InitTypeDef RTC_InitStruct = {0};
|
||||
LL_RTC_InitTypeDef RTC_InitStruct;
|
||||
RTC_InitStruct.HourFormat = LL_RTC_HOURFORMAT_24HOUR;
|
||||
RTC_InitStruct.AsynchPrescaler = 127;
|
||||
RTC_InitStruct.SynchPrescaler = 255;
|
||||
|
||||
@@ -26,7 +26,7 @@ static void furi_hal_usart_init(uint32_t baud) {
|
||||
GpioSpeedVeryHigh,
|
||||
GpioAltFn7USART1);
|
||||
|
||||
LL_USART_InitTypeDef USART_InitStruct = {0};
|
||||
LL_USART_InitTypeDef USART_InitStruct;
|
||||
USART_InitStruct.PrescalerValue = LL_USART_PRESCALER_DIV1;
|
||||
USART_InitStruct.BaudRate = baud;
|
||||
USART_InitStruct.DataWidth = LL_USART_DATAWIDTH_8B;
|
||||
@@ -62,7 +62,7 @@ static void furi_hal_lpuart_init(uint32_t baud) {
|
||||
GpioSpeedVeryHigh,
|
||||
GpioAltFn8LPUART1);
|
||||
|
||||
LL_LPUART_InitTypeDef LPUART_InitStruct = {0};
|
||||
LL_LPUART_InitTypeDef LPUART_InitStruct;
|
||||
LPUART_InitStruct.PrescalerValue = LL_LPUART_PRESCALER_DIV1;
|
||||
LPUART_InitStruct.BaudRate = 115200;
|
||||
LPUART_InitStruct.DataWidth = LL_LPUART_DATAWIDTH_8B;
|
||||
|
||||
@@ -360,11 +360,11 @@ bool furi_hal_hid_consumer_key_release(uint16_t button) {
|
||||
static void* hid_set_string_descr(char* str) {
|
||||
furi_assert(str);
|
||||
|
||||
uint8_t len = strlen(str);
|
||||
size_t len = strlen(str);
|
||||
struct usb_string_descriptor* dev_str_desc = malloc(len * 2 + 2);
|
||||
dev_str_desc->bLength = len * 2 + 2;
|
||||
dev_str_desc->bDescriptorType = USB_DTYPE_STRING;
|
||||
for(uint8_t i = 0; i < len; i++) dev_str_desc->wString[i] = str[i];
|
||||
for(size_t i = 0; i < len; i++) dev_str_desc->wString[i] = str[i];
|
||||
|
||||
return dev_str_desc;
|
||||
}
|
||||
|
||||
@@ -190,8 +190,6 @@ static void furi_hal_version_load_otp_v2() {
|
||||
void furi_hal_version_init() {
|
||||
switch(furi_hal_version_get_otp_version()) {
|
||||
case FuriHalVersionOtpVersionUnknown:
|
||||
furi_hal_version_load_otp_default();
|
||||
break;
|
||||
case FuriHalVersionOtpVersionEmpty:
|
||||
furi_hal_version_load_otp_default();
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user