Fire_RT1052_WHD/src/whd_port/resources/whd_resources.c

88 lines
2.5 KiB
C

#include <string.h>
/* WHD resource API */
#include "whd_resource_api.h"
/* Private resource storage identifiers */
#include "whd_port/resources/whd_resources.h"
#define RESOURCE_FIRMWARE_NAME cyw43362a2_firmware_image
#define RESOURCE_FIRMWARE_SIZE sizeof(RESOURCE_FIRMWARE_NAME)
/* CYW43362A2 does not have CLM */
#define RESOURCE_CLM_NAME
#define RESOURCE_CLM_SIZE 0
#define RESOURCE_NVRAM_NAME cyw43362a2_nvram_image
#define RESOURCE_NVRAM_SIZE sizeof(RESOURCE_NVRAM_NAME)
#define RESOURCE_BUFFER_SIZE 512
static uint8_t s_resource_buf[RESOURCE_BUFFER_SIZE];
static uint32_t resource_block_size(whd_driver_t whd_drv, whd_resource_type_t type, uint32_t *size_out) {
*size_out = RESOURCE_BUFFER_SIZE;
return WHD_SUCCESS;
}
static uint32_t resource_size(whd_driver_t whd_drv, whd_resource_type_t resource, uint32_t *size_out) {
switch (resource) {
case WHD_RESOURCE_WLAN_FIRMWARE:
*size_out = RESOURCE_FIRMWARE_SIZE;
break;
case WHD_RESOURCE_WLAN_NVRAM:
*size_out = RESOURCE_NVRAM_SIZE;
break;
case WHD_RESOURCE_WLAN_CLM:
*size_out = RESOURCE_CLM_SIZE;
break;
default:
*size_out = 0;
break;
}
return WHD_SUCCESS;
}
static uint32_t resource_no_of_blocks(whd_driver_t whd_drv, whd_resource_type_t type, uint32_t *block_count) {
uint32_t res_sz = 0U;
uint32_t blk_sz = 0U;
resource_size(whd_drv, type, &res_sz);
resource_block_size(whd_drv, type, &blk_sz);
*block_count = res_sz / blk_sz;
if (res_sz % blk_sz) *block_count += 1;
return WHD_SUCCESS;
}
static uint32_t resource_block(whd_driver_t whd_drv, whd_resource_type_t type, uint32_t blockno, const uint8_t **data,
uint32_t *size_out) {
uint32_t ret = WHD_SUCCESS;
uint32_t res_sz = 0U;
uint32_t blk_sz = 0U;
ret = resource_size(whd_drv, type, &res_sz);
if (ret != WHD_SUCCESS) {
return ret;
}
ret = resource_block_size(whd_drv, type, &blk_sz);
if (ret != WHD_SUCCESS) {
return ret;
}
switch (type) {
case WHD_RESOURCE_WLAN_FIRMWARE: {
/* TODO: Implement this */
}
}
return WHD_SUCCESS;
}
whd_resource_source_t resource_ops = {
.whd_resource_size = resource_size,
.whd_get_resource_block_size = resource_block_size,
.whd_get_resource_no_of_blocks = resource_no_of_blocks,
.whd_get_resource_block = resource_block,
};