mirror of
https://github.com/Ai-Thinker-Open/Ai-Thinker-Open_RTL8710BX_ALIOS_SDK.git
synced 2025-02-06 04:15:24 +00:00
195 lines
5.7 KiB
C
195 lines
5.7 KiB
C
#include "hal/soc/soc.h"
|
|
//#include "serial_api.h"
|
|
#include <aos/kernel.h>
|
|
#include "hfilop/hfilop.h"
|
|
#include "rda59xx_daemon.h"
|
|
#include "rda59xx_wifi_include.h"
|
|
#include "ota_hal_plat.h"
|
|
/* Logic partition on flash devices */
|
|
const hal_logic_partition_t hal_partitions[] =
|
|
{
|
|
#if 0
|
|
[HAL_PARTITION_BOOTLOADER] =
|
|
{
|
|
.partition_owner = HAL_FLASH_EMBEDDED,
|
|
.partition_description = "Bootloader",
|
|
.partition_start_addr = 0x18001000,
|
|
.partition_length = 0x3000, //12k bytes
|
|
.partition_options = PAR_OPT_READ_EN | PAR_OPT_WRITE_EN,
|
|
},
|
|
#endif
|
|
[HAL_PARTITION_APPLICATION] =
|
|
{
|
|
.partition_owner = HAL_FLASH_EMBEDDED,
|
|
.partition_description = "Application",
|
|
.partition_start_addr = 0x18004000,
|
|
.partition_length = 0x91000,//580K bytes
|
|
.partition_options = PAR_OPT_READ_EN | PAR_OPT_WRITE_EN,
|
|
},
|
|
#if 1
|
|
[HAL_PARTITION_OTA_TEMP] =
|
|
{
|
|
.partition_owner = HAL_FLASH_EMBEDDED,
|
|
.partition_description = "OTA Storage",
|
|
.partition_start_addr = 0x18095000,
|
|
.partition_length = 0x5D000,//372K bytes
|
|
.partition_options = PAR_OPT_READ_EN | PAR_OPT_WRITE_EN,
|
|
},
|
|
#endif
|
|
[HAL_PARTITION_PARAMETER_1] =
|
|
{
|
|
.partition_owner = HAL_FLASH_EMBEDDED,
|
|
.partition_description = "PARAMETER1",
|
|
.partition_start_addr = 0x180F7000,
|
|
.partition_length = 0x1000, //4k bytes
|
|
.partition_options = PAR_OPT_READ_EN | PAR_OPT_WRITE_EN,
|
|
},
|
|
[HAL_PARTITION_PARAMETER_2] =
|
|
{
|
|
.partition_owner = HAL_FLASH_EMBEDDED,
|
|
.partition_description = "PARAMETER2",
|
|
.partition_start_addr = 0x180F8000,
|
|
.partition_length = 0x2000, //8k bytes
|
|
.partition_options = PAR_OPT_READ_EN | PAR_OPT_WRITE_EN,
|
|
},
|
|
[HAL_PARTITION_PARAMETER_3] =
|
|
{
|
|
.partition_owner = HAL_FLASH_EMBEDDED,
|
|
.partition_description = "PARAMETER3",
|
|
.partition_start_addr = 0x180FA000,
|
|
.partition_length = 0x1000, //4k bytes
|
|
.partition_options = PAR_OPT_READ_EN | PAR_OPT_WRITE_EN,
|
|
},
|
|
[HAL_PARTITION_PARAMETER_4] =
|
|
{
|
|
.partition_owner = HAL_FLASH_EMBEDDED,
|
|
.partition_description = "PARAMETER4",
|
|
.partition_start_addr = 0x180FB000,
|
|
.partition_length = 0x1000, //4k bytes
|
|
.partition_options = PAR_OPT_READ_EN | PAR_OPT_WRITE_EN,
|
|
},
|
|
[HAL_PARTITION_SYS_DATA] =
|
|
{
|
|
.partition_owner = HAL_FLASH_EMBEDDED,
|
|
.partition_description = "SYS RF Data",
|
|
.partition_start_addr = 0x180FC000,
|
|
.partition_length = 0x1000,
|
|
.partition_options = PAR_OPT_READ_EN | PAR_OPT_WRITE_EN,
|
|
},
|
|
[HAL_PARTITION_HFILOP] =
|
|
{
|
|
.partition_owner = HAL_FLASH_EMBEDDED,
|
|
.partition_description = "HFILOP",
|
|
.partition_start_addr = 0x180FD000,
|
|
.partition_length = 0x2000, //8k bytes
|
|
.partition_options = PAR_OPT_READ_EN | PAR_OPT_WRITE_EN,
|
|
},
|
|
};
|
|
extern uart_dev_t uart_0;
|
|
/*
|
|
uart_dev_t uart_0 = {
|
|
0,
|
|
{921600, DATA_WIDTH_8BIT, NO_PARITY, STOP_BITS_1, FLOW_CONTROL_DISABLED},
|
|
NULL,
|
|
};
|
|
*/
|
|
|
|
typedef int (*wifi_scan_callback_t)(ap_list_adv_t *);
|
|
static int transform_rssi(int rssi_dbm)
|
|
{
|
|
int ret;
|
|
ret = (rssi_dbm+95)*2;
|
|
|
|
if (ret < 70)
|
|
ret = ret -(15 - ret/5);
|
|
|
|
if(ret < 0)
|
|
ret = 0;
|
|
else if(ret >100)
|
|
ret = 100;
|
|
|
|
return ret;
|
|
}
|
|
|
|
int hfilop_wifi_scan(wifi_scan_callback_t cb)
|
|
{
|
|
rda59xx_scan_info scan_info;
|
|
memset(&scan_info, 0, sizeof(rda59xx_scan_info));
|
|
scan_info.scan_mode = 1;
|
|
scan_info.scan_time = 3;
|
|
rda59xx_scan(&scan_info);
|
|
|
|
int ap_num = 0, i;
|
|
if(cb != NULL)
|
|
{
|
|
ap_list_adv_t ap_info;
|
|
rda59xx_scan_result *ap_records;
|
|
ap_num = rda59xx_get_scan_num();
|
|
if (ap_num > 50)
|
|
ap_num = 50;
|
|
|
|
ap_records = aos_malloc(ap_num * sizeof(*ap_records));
|
|
if (!ap_records)
|
|
return 0;
|
|
|
|
rda59xx_get_scan_result(ap_records, ap_num);
|
|
|
|
for (i = 0; i < ap_num; i++)
|
|
{
|
|
rda59xx_scan_result *r = ap_records + i;
|
|
memset(&ap_info, 0, sizeof(ap_info));
|
|
memcpy(ap_info.bssid, r->BSSID, sizeof(ap_info.bssid));
|
|
memcpy(ap_info.ssid, r->SSID, r->SSID_len);
|
|
ap_info.ap_power = transform_rssi(r->RSSI);
|
|
ap_info.channel = r->channel;
|
|
ap_info.security = r->secure_type;
|
|
|
|
cb(&ap_info);
|
|
}
|
|
if (ap_records)
|
|
aos_free(ap_records);
|
|
}
|
|
return ap_num;
|
|
}
|
|
|
|
int32_t rda_get_macaddr_from_flash(unsigned char *macaddr)
|
|
{
|
|
memcpy((char *)macaddr, hfilop_layer_get_mac(), 6);
|
|
return 0;
|
|
}
|
|
|
|
char* rda59xx_sta_netif_get_hostname(void)
|
|
{
|
|
char* host_name = hfilop_layer_get_hostname();
|
|
printf("Vendor host name: %.*s\n", 25, host_name);
|
|
return host_name;
|
|
}
|
|
|
|
int board_wifi_init_hook(hal_wifi_module_t *m)
|
|
{
|
|
hfilop_config_init();
|
|
extern ota_hal_module_t ota_hal_module;
|
|
ota_hal_register_module(&ota_hal_module);
|
|
|
|
hfilop_ota_auto_upgrade(NULL, NULL);
|
|
|
|
extern int hfilop_mac_key_is_valid(void);
|
|
if(!hfilop_mac_key_is_valid())
|
|
{
|
|
hfilop_uart_task_start(NULL, NULL);
|
|
while(1) aos_msleep(1000);
|
|
}
|
|
}
|
|
|
|
void board_init(void)
|
|
{
|
|
hal_uart_init(&uart_0);
|
|
}
|
|
|
|
void board_init_later(void)
|
|
{
|
|
hfilop_init_rf_type(MODULE_TYPE);
|
|
hfilop_assis_task_start();
|
|
hfilop_check_ota_state();
|
|
printf("====board_init_later done===\r\n");
|
|
}
|