BLE: fix incorrect RSSI calculation. Firmware: don't mark system as tainted on test releases. (#567)
* BLE: correct RSSI calculation routine. * Firmware: only guard boot on production releases. * BLE: proper float formatting in cli * BLE: faster RSSI refresh
This commit is contained in:
		
							parent
							
								
									54114553c1
								
							
						
					
					
						commit
						607e873404
					
				
							
								
								
									
										8
									
								
								applications/bt/bt_cli.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										8
									
								
								applications/bt/bt_cli.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							| @ -63,15 +63,15 @@ void bt_cli_command_carrier_rx(Cli* cli, string_t args, void* context) { | |||||||
|     } |     } | ||||||
|     printf("Receiving carrier at %hu channel\r\n", channel); |     printf("Receiving carrier at %hu channel\r\n", channel); | ||||||
|     printf("Press CTRL+C to stop\r\n"); |     printf("Press CTRL+C to stop\r\n"); | ||||||
|  | 
 | ||||||
|     api_hal_bt_start_packet_rx(channel, 1); |     api_hal_bt_start_packet_rx(channel, 1); | ||||||
| 
 | 
 | ||||||
|     float rssi_raw = 0; |  | ||||||
|     while(!cli_cmd_interrupt_received(cli)) { |     while(!cli_cmd_interrupt_received(cli)) { | ||||||
|         osDelay(250); |         osDelay(1024 / 4); | ||||||
|         rssi_raw = api_hal_bt_get_rssi(); |         printf("RSSI: %6.1f dB\r", api_hal_bt_get_rssi()); | ||||||
|         printf("RSSI: %03.1f dB\r", rssi_raw); |  | ||||||
|         fflush(stdout); |         fflush(stdout); | ||||||
|     } |     } | ||||||
|  | 
 | ||||||
|     api_hal_bt_stop_packet_test(); |     api_hal_bt_stop_packet_test(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -7,7 +7,9 @@ | |||||||
| #define BOOT_REQUEST_DFU 0xDF00B000 | #define BOOT_REQUEST_DFU 0xDF00B000 | ||||||
| 
 | 
 | ||||||
| void api_hal_boot_init() { | void api_hal_boot_init() { | ||||||
|  | #ifndef DEBUG | ||||||
|     LL_RTC_BAK_SetRegister(RTC, LL_RTC_BKP_DR0, BOOT_REQUEST_TAINTED); |     LL_RTC_BAK_SetRegister(RTC, LL_RTC_BKP_DR0, BOOT_REQUEST_TAINTED); | ||||||
|  | #endif | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void api_hal_boot_set_mode(ApiHalBootMode mode) { | void api_hal_boot_set_mode(ApiHalBootMode mode) { | ||||||
|  | |||||||
| @ -112,11 +112,14 @@ void api_hal_bt_start_rx(uint8_t channel) { | |||||||
| float api_hal_bt_get_rssi() { | float api_hal_bt_get_rssi() { | ||||||
|     float val; |     float val; | ||||||
|     uint8_t rssi_raw[3]; |     uint8_t rssi_raw[3]; | ||||||
|     aci_hal_read_raw_rssi(rssi_raw); | 
 | ||||||
|  |     if (aci_hal_read_raw_rssi(rssi_raw) != BLE_STATUS_SUCCESS) { | ||||||
|  |         return 0.0f; | ||||||
|  |     } | ||||||
| 
 | 
 | ||||||
|     // Some ST magic with rssi
 |     // Some ST magic with rssi
 | ||||||
|     uint8_t agc = rssi_raw[2] & 0xFF; |     uint8_t agc = rssi_raw[2] & 0xFF; | ||||||
|     int rssi = (rssi_raw[1] << 8 & 0xFF00) + (rssi_raw[1] & 0xFF); |     int rssi = (((int)rssi_raw[1] << 8) & 0xFF00) + (rssi_raw[0] & 0xFF); | ||||||
|     if(rssi == 0 || agc > 11) { |     if(rssi == 0 || agc > 11) { | ||||||
|         val = -127.0; |         val = -127.0; | ||||||
|     } else { |     } else { | ||||||
|  | |||||||
| @ -7,7 +7,9 @@ | |||||||
| #define BOOT_REQUEST_DFU 0xDF00B000 | #define BOOT_REQUEST_DFU 0xDF00B000 | ||||||
| 
 | 
 | ||||||
| void api_hal_boot_init() { | void api_hal_boot_init() { | ||||||
|  | #ifndef DEBUG | ||||||
|     LL_RTC_BAK_SetRegister(RTC, LL_RTC_BKP_DR0, BOOT_REQUEST_TAINTED); |     LL_RTC_BAK_SetRegister(RTC, LL_RTC_BKP_DR0, BOOT_REQUEST_TAINTED); | ||||||
|  | #endif | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void api_hal_boot_set_mode(ApiHalBootMode mode) { | void api_hal_boot_set_mode(ApiHalBootMode mode) { | ||||||
|  | |||||||
| @ -112,11 +112,14 @@ void api_hal_bt_start_rx(uint8_t channel) { | |||||||
| float api_hal_bt_get_rssi() { | float api_hal_bt_get_rssi() { | ||||||
|     float val; |     float val; | ||||||
|     uint8_t rssi_raw[3]; |     uint8_t rssi_raw[3]; | ||||||
|     aci_hal_read_raw_rssi(rssi_raw); | 
 | ||||||
|  |     if (aci_hal_read_raw_rssi(rssi_raw) != BLE_STATUS_SUCCESS) { | ||||||
|  |         return 0.0f; | ||||||
|  |     } | ||||||
| 
 | 
 | ||||||
|     // Some ST magic with rssi
 |     // Some ST magic with rssi
 | ||||||
|     uint8_t agc = rssi_raw[2] & 0xFF; |     uint8_t agc = rssi_raw[2] & 0xFF; | ||||||
|     int rssi = (rssi_raw[1] << 8 & 0xFF00) + (rssi_raw[1] & 0xFF); |     int rssi = (((int)rssi_raw[1] << 8) & 0xFF00) + (rssi_raw[0] & 0xFF); | ||||||
|     if(rssi == 0 || agc > 11) { |     if(rssi == 0 || agc > 11) { | ||||||
|         val = -127.0; |         val = -127.0; | ||||||
|     } else { |     } else { | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 あく
						あく