v1
This commit is contained in:
@@ -0,0 +1,319 @@
|
||||
/**
|
||||
****************************************************************************************
|
||||
*
|
||||
* @file app_task.h
|
||||
*
|
||||
* @brief Header file - APPTASK.
|
||||
*
|
||||
* Copyright (C) RivieraWaves 2009-2015
|
||||
*
|
||||
*
|
||||
****************************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef APP_TASK_H_
|
||||
#define APP_TASK_H_
|
||||
|
||||
/**
|
||||
****************************************************************************************
|
||||
* @addtogroup APPTASK Task
|
||||
* @ingroup APP
|
||||
* @brief Routes ALL messages to/from APP block.
|
||||
*
|
||||
* The APPTASK is the block responsible for bridging the final application with
|
||||
*the RWBLE software host stack. It communicates with the different modules of
|
||||
*the BLE host, i.e. @ref SMP, @ref GAP and @ref GATT.
|
||||
*
|
||||
* @{
|
||||
****************************************************************************************
|
||||
*/
|
||||
|
||||
#include "co_bt_defines.h"
|
||||
#include "dbg.h"
|
||||
#include "gapm_int.h"
|
||||
#include "gatt_msg_int.h" // GATTC Definitions
|
||||
#include "ke_task.h" // Kernel Task
|
||||
#include "rwip_task.h" // Task definitions
|
||||
#include "ota_server.h"
|
||||
#include "xc_gap_api.h"
|
||||
#include <stdbool.h>
|
||||
#include <stdint.h> // Standard Integer Definition
|
||||
#include <stdio.h>
|
||||
|
||||
#if (NVDS_SUPPORT)
|
||||
#include "nvds.h"
|
||||
#endif // (NVDS_SUPPORT)
|
||||
|
||||
#define APP_HANDLERS(subtask) \
|
||||
{ \
|
||||
&subtask##_msg_handler_list[0], ARRAY_LEN(subtask##_msg_handler_list) \
|
||||
}
|
||||
|
||||
/// Default Device Name
|
||||
#define APP_DFLT_DEVICE_NAME ("MARVEL")
|
||||
#define APP_DFLT_DEVICE_NAME_LEN (sizeof(APP_DFLT_DEVICE_NAME))
|
||||
/// Maximal length of the Device Name value
|
||||
#define APP_DEVICE_NAME_MAX_LEN (18)
|
||||
#define APP_MAX_TX_POWER (0)
|
||||
// Advertising channel map - 37, 38, 39
|
||||
#define APP_ADV_CHMAP (0x07)
|
||||
// Advertising minimum interval - 40ms (64*0.625ms)
|
||||
#define APP_ADV_INT_MIN (64)
|
||||
// Advertising maximum interval - 40ms (64*0.625ms)
|
||||
#define APP_ADV_INT_MAX (64)
|
||||
#define ADV_DATA_MAX_LENGTH 28
|
||||
|
||||
#define MANUFACTURER_DATA "\x09\xFF\x00\x60\x52\x57\x2D\x42\x4C\x45"
|
||||
#define MANUFACTURER_DATA_LEN 10
|
||||
|
||||
/// Advertising duration (in unit of 10ms). 0 means that advertising continues
|
||||
/// until the host disable it
|
||||
#define ADV_DURATION 0
|
||||
|
||||
#define APP_SCAN_INTERVAL (0xa0)
|
||||
#define APP_SCAN_WINDOW (0x50)
|
||||
|
||||
#define APP_CONN_EST_TIME_OUT (0)
|
||||
#define APP_CONN_SCNA_INTV (32)
|
||||
#define APP_CONN_SCAN_WD (20)
|
||||
#define APP_CONN_INTV_MIN (80)
|
||||
#define APP_CONN_INV_MAX (80)
|
||||
#define APP_CONN_LATENCY (0)
|
||||
#define APP_CONN_TIME_OUT (500)
|
||||
|
||||
/// Number of APP Task Instances
|
||||
#define APP_IDX_MAX 1
|
||||
#define DEV_APPEARANCE 0
|
||||
|
||||
#define BLE_UAPDATA_MIN_INTVALUE 8
|
||||
#define BLE_UAPDATA_MAX_INTVALUE 10
|
||||
#define BLE_UAPDATA_LATENCY 0
|
||||
#define BLE_UAPDATA_TIMEOUT 200
|
||||
|
||||
#define INVALID_DATA 0xFF
|
||||
|
||||
#define TAGET_DEVICE_ADDR ("\x12\x34\x56\x78\x90\xAB")
|
||||
|
||||
|
||||
/// Application environment structure
|
||||
struct app_env_tag
|
||||
{
|
||||
/// Connection handle
|
||||
uint16_t conhdl;
|
||||
/// Connection Index
|
||||
uint8_t conidx;
|
||||
/// Current advertising state (@see enum app_adv_state)
|
||||
uint8_t adv_state;
|
||||
/// Current advertising state (@see enum app_adv_state)
|
||||
uint8_t scan_state;
|
||||
/// Current advertising state (@see enum app_adv_state)
|
||||
uint8_t init_state;
|
||||
/// Next expected operation completed event
|
||||
uint8_t adv_op;
|
||||
|
||||
/// Last initialized profile
|
||||
uint8_t next_svc;
|
||||
|
||||
/// Bonding status
|
||||
bool bonded;
|
||||
|
||||
/// Device Name length
|
||||
uint8_t dev_name_len;
|
||||
/// Device Name
|
||||
uint8_t dev_name[APP_DEVICE_NAME_MAX_LEN];
|
||||
|
||||
/// Local device IRK
|
||||
uint8_t loc_irk[KEY_LEN];
|
||||
|
||||
/// Secure Connections on current link
|
||||
bool sec_con_enabled;
|
||||
|
||||
/// Counter used to generate IRK
|
||||
uint8_t rand_cnt;
|
||||
|
||||
/// Demonstration type length
|
||||
uint8_t demo_type_len;
|
||||
/// Demonstration type
|
||||
uint8_t demo_type;
|
||||
/// GATT user local identifier
|
||||
uint8_t user_lid;
|
||||
uint8_t adv_actv_idx;
|
||||
uint8_t slave_conidx;
|
||||
bool slave_connected;
|
||||
|
||||
};
|
||||
|
||||
#if (NVDS_SUPPORT)
|
||||
/// List of Application NVDS TAG identifiers
|
||||
enum app_nvds_tag
|
||||
{
|
||||
/// Device Name
|
||||
NVDS_TAG_DEVICE_NAME = 0x02,
|
||||
NVDS_LEN_DEVICE_NAME = 62,
|
||||
|
||||
/// BD Address
|
||||
NVDS_TAG_BD_ADDRESS = 0x01,
|
||||
NVDS_LEN_BD_ADDRESS = 6,
|
||||
|
||||
/// Local device Identity resolving key
|
||||
NVDS_TAG_LOC_IRK = 0xA0,
|
||||
NVDS_LEN_LOC_IRK = KEY_LEN,
|
||||
|
||||
#if (BLE_APP_PRF)
|
||||
/// BLE Application Advertising data
|
||||
NVDS_TAG_APP_BLE_ADV_DATA = 0x0B,
|
||||
NVDS_LEN_APP_BLE_ADV_DATA = 32,
|
||||
|
||||
/// BLE Application Scan response data
|
||||
NVDS_TAG_APP_BLE_SCAN_RESP_DATA = 0x0C,
|
||||
NVDS_LEN_APP_BLE_SCAN_RESP_DATA = 32,
|
||||
|
||||
/// Mouse Sample Rate
|
||||
NVDS_TAG_MOUSE_SAMPLE_RATE = 0x38,
|
||||
NVDS_LEN_MOUSE_SAMPLE_RATE = 1,
|
||||
|
||||
/// Peripheral Bonded
|
||||
NVDS_TAG_PERIPH_BONDED = 0x39,
|
||||
NVDS_LEN_PERIPH_BONDED = 1,
|
||||
|
||||
/// Mouse NTF Cfg
|
||||
NVDS_TAG_MOUSE_NTF_CFG = 0x3A,
|
||||
NVDS_LEN_MOUSE_NTF_CFG = 2,
|
||||
|
||||
/// Mouse Timeout value
|
||||
NVDS_TAG_MOUSE_TIMEOUT = 0x3B,
|
||||
NVDS_LEN_MOUSE_TIMEOUT = 2,
|
||||
|
||||
/// Peer Device BD Address
|
||||
NVDS_TAG_PEER_BD_ADDRESS = 0x3C,
|
||||
NVDS_LEN_PEER_BD_ADDRESS = 7,
|
||||
|
||||
/// Mouse Energy Safe
|
||||
NVDS_TAG_MOUSE_ENERGY_SAFE = 0x3D,
|
||||
NVDS_LEN_MOUSE_SAFE_ENERGY = 2,
|
||||
|
||||
/// EDIV (2bytes), RAND NB (8bytes), LTK (16 bytes), Key Size (1 byte)
|
||||
NVDS_TAG_LTK = 0x3E,
|
||||
NVDS_LEN_LTK = 28,
|
||||
|
||||
/// PAIRING
|
||||
NVDS_TAG_PAIRING = 0x3F,
|
||||
NVDS_LEN_PAIRING = 54,
|
||||
|
||||
/// Audio mode 0 task
|
||||
NVDS_TAG_AM0_FIRST = 0x90,
|
||||
NVDS_TAG_AM0_LAST = 0x9F,
|
||||
|
||||
/// Peer device Resolving identity key (+identity address)
|
||||
NVDS_TAG_PEER_IRK = 0xA1,
|
||||
NVDS_LEN_PEER_IRK = sizeof(struct gapc_irk),
|
||||
|
||||
#endif //(BLE_APP_PRF)
|
||||
};
|
||||
#endif // (NVDS_SUPPORT)
|
||||
|
||||
/// Advertising state machine
|
||||
enum app_adv_state
|
||||
{
|
||||
/// Advertising activity does not exists
|
||||
APP_ADV_STATE_IDLE = 0,
|
||||
#if BLE_APP_PRF
|
||||
/// Creating advertising activity
|
||||
APP_ADV_STATE_CREATING,
|
||||
/// Setting advertising data
|
||||
APP_ADV_STATE_SETTING_ADV_DATA,
|
||||
/// Setting scan response data
|
||||
APP_ADV_STATE_SETTING_SCAN_RSP_DATA,
|
||||
|
||||
/// Advertising activity created
|
||||
APP_ADV_STATE_CREATED,
|
||||
/// Starting advertising activity
|
||||
APP_ADV_STATE_STARTING,
|
||||
/// Advertising activity started
|
||||
APP_ADV_STATE_STARTED,
|
||||
/// Stopping advertising activity
|
||||
APP_ADV_STATE_STOPPING,
|
||||
APP_ADV_STATE_STOPPED,
|
||||
#endif //(BLE_APP_PRF)
|
||||
};
|
||||
|
||||
/// Scanning state machine
|
||||
enum app_scan_state
|
||||
{
|
||||
APP_SCAN_STATE_IDLE = 0,
|
||||
APP_SCAN_STATE_CREATING,
|
||||
APP_SCAN_STATE_CREATED,
|
||||
APP_SCAN_STATE_STARTING,
|
||||
APP_SCAN_STATE_STARTED,
|
||||
APP_SCAN_STATE_STOPPING,
|
||||
APP_SCAN_STATE_STOPPED,
|
||||
};
|
||||
|
||||
/// initting state machine
|
||||
enum app_init_state
|
||||
{
|
||||
APP_INIT_STATE_IDLE = 0,
|
||||
APP_INIT_STATE_CREATING,
|
||||
APP_INIT_STATE_CREATED,
|
||||
APP_INIT_STATE_STARTING,
|
||||
APP_INIT_STATE_STARTED,
|
||||
APP_INIT_STATE_STOPPING,
|
||||
APP_INIT_STATE_STOPPED,
|
||||
};
|
||||
|
||||
/// States of APP task
|
||||
enum app_state
|
||||
{
|
||||
/// Initialization state
|
||||
APP_INIT,
|
||||
/// Database create state
|
||||
APP_CREATE_DB,
|
||||
/// Ready State
|
||||
APP_READY,
|
||||
/// Connected state
|
||||
APP_CONNECTED,
|
||||
|
||||
/// Number of defined states.
|
||||
APP_STATE_MAX
|
||||
};
|
||||
|
||||
/// APP Task messages
|
||||
/*@TRACE*/
|
||||
enum app_msg_id
|
||||
{
|
||||
APP_DUMMY_MSG = TASK_FIRST_MSG(TASK_ID_APP),
|
||||
|
||||
#if (BLE_APP_PRF)
|
||||
#if (BLE_APP_HT)
|
||||
/// Timer used to refresh the temperature measurement value
|
||||
APP_HT_MEAS_INTV_TIMER,
|
||||
#endif //(BLE_APP_HT)
|
||||
|
||||
#if (BLE_APP_HID)
|
||||
/// Timer used to disconnect the moue if no activity is detecter
|
||||
APP_HID_MOUSE_TIMEOUT_TIMER,
|
||||
#endif //(BLE_APP_HID)
|
||||
#endif //(BLE_APP_PRF)
|
||||
|
||||
};
|
||||
|
||||
struct app_subtask_handlers
|
||||
{
|
||||
/// Pointer to the message handler table
|
||||
const struct ke_msg_handler *p_msg_handler_tab;
|
||||
/// Number of messages handled
|
||||
uint16_t msg_cnt;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
****************************************************************************************
|
||||
* @brief Initialize the BLE demo application.
|
||||
****************************************************************************************
|
||||
*/
|
||||
extern struct app_env_tag app_env;
|
||||
void app_init(void);
|
||||
struct app_env_tag *get_app_env(void);
|
||||
/// @} APPTASK
|
||||
|
||||
#endif // APP_TASK_H_
|
||||
@@ -0,0 +1,78 @@
|
||||
/**
|
||||
****************************************************************************************
|
||||
*
|
||||
* @file rwapp_config.h
|
||||
*
|
||||
* @brief Application configuration definition
|
||||
*
|
||||
* Copyright (C) RivieraWaves 2009-2016
|
||||
*
|
||||
****************************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef _RWAPP_CONFIG_H_
|
||||
#define _RWAPP_CONFIG_H_
|
||||
|
||||
/**
|
||||
****************************************************************************************
|
||||
* @addtogroup app
|
||||
* @brief Application configuration definition
|
||||
*
|
||||
* @{
|
||||
****************************************************************************************
|
||||
*/
|
||||
|
||||
/*
|
||||
* INCLUDE FILES
|
||||
****************************************************************************************
|
||||
*/
|
||||
|
||||
/*
|
||||
* DEFINES
|
||||
****************************************************************************************
|
||||
*/
|
||||
|
||||
#define CFG_APP_BATT
|
||||
/******************************************************************************************/
|
||||
/* ------------------------- BLE APPLICATION SETTINGS
|
||||
* -----------------------------*/
|
||||
/******************************************************************************************/
|
||||
|
||||
/// Application Profile
|
||||
#if defined(CFG_APP_PRF)
|
||||
#define BLE_APP_PRF 1
|
||||
#else // defined(CFG_APP_PRF)
|
||||
#define BLE_APP_PRF 0
|
||||
#endif // defined(CFG_APP_PRF)
|
||||
|
||||
/// Health Thermometer Application
|
||||
#if defined(CFG_APP_HT)
|
||||
#define BLE_APP_HT 1
|
||||
#else // defined(CFG_APP_HT)
|
||||
#define BLE_APP_HT 0
|
||||
#endif // defined(CFG_APP_HT)
|
||||
|
||||
/// HID Application
|
||||
#if defined(CFG_APP_HID)
|
||||
#define BLE_APP_HID 1
|
||||
#else // defined(CFG_APP_HID)
|
||||
#define BLE_APP_HID 0
|
||||
#endif // defined(CFG_APP_HID)
|
||||
|
||||
/// DIS Application
|
||||
#if defined(CFG_APP_DIS)
|
||||
#define BLE_APP_DIS 1
|
||||
#else // defined(CFG_APP_DIS)
|
||||
#define BLE_APP_DIS 0
|
||||
#endif // defined(CFG_APP_DIS)
|
||||
|
||||
/// Battery Service Application
|
||||
#if defined(CFG_APP_BATT)
|
||||
#define BLE_APP_BATT 1
|
||||
#else
|
||||
#define BLE_APP_BATT 0
|
||||
#endif //(BLE_APP_BATT)
|
||||
|
||||
/// @} rwapp_config
|
||||
|
||||
#endif /* _RWAPP_CONFIG_H_ */
|
||||
Binary file not shown.
@@ -0,0 +1,189 @@
|
||||
/**
|
||||
****************************************************************************************
|
||||
*
|
||||
* @file app_batt.c
|
||||
*
|
||||
* @brief Battery Application Module entry point
|
||||
*
|
||||
* Copyright (C) RivieraWaves 2009-2015
|
||||
*
|
||||
*
|
||||
****************************************************************************************
|
||||
*/
|
||||
|
||||
/**
|
||||
****************************************************************************************
|
||||
* @addtogroup APP
|
||||
* @{
|
||||
****************************************************************************************
|
||||
*/
|
||||
|
||||
#include "rwip_config.h" // SW configuration
|
||||
|
||||
#if (BLE_APP_BATT)
|
||||
|
||||
/*
|
||||
* INCLUDE FILES
|
||||
****************************************************************************************
|
||||
*/
|
||||
|
||||
#include "app_batt.h" // Battery Application Module Definitions
|
||||
#include "app_task.h" // application task definitions
|
||||
#include "bass_msg.h" // health thermometer functions
|
||||
#include "co_bt.h"
|
||||
#include "co_utils.h"
|
||||
#include "prf_types.h" // Profile common types definition
|
||||
#include "arch.h" // Platform Definitions
|
||||
#include "prf.h"
|
||||
#include <string.h>
|
||||
|
||||
/*
|
||||
* DEFINES
|
||||
****************************************************************************************
|
||||
*/
|
||||
|
||||
/*
|
||||
* GLOBAL VARIABLE DEFINITIONS
|
||||
****************************************************************************************
|
||||
*/
|
||||
|
||||
/// Battery Application Module Environment Structure
|
||||
struct app_batt_env_tag app_batt_env;
|
||||
|
||||
/*
|
||||
* GLOBAL FUNCTION DEFINITIONS
|
||||
****************************************************************************************
|
||||
*/
|
||||
|
||||
void app_batt_init(void)
|
||||
{
|
||||
// Reset the environment
|
||||
memset(&app_batt_env, 0, sizeof(struct app_batt_env_tag));
|
||||
|
||||
// Initial battery level: 100
|
||||
app_batt_env.batt_lvl = 100;
|
||||
}
|
||||
|
||||
void app_batt_add_bas(void)
|
||||
{
|
||||
struct bass_db_cfg* db_cfg;
|
||||
// Allocate the BASS_CREATE_DB_REQ
|
||||
struct gapm_profile_task_add_cmd *req = KE_MSG_ALLOC_DYN(GAPM_PROFILE_TASK_ADD_CMD,
|
||||
TASK_GAPM, TASK_APP,
|
||||
gapm_profile_task_add_cmd, sizeof(struct bass_db_cfg));
|
||||
// Fill message
|
||||
req->operation = GAPM_PROFILE_TASK_ADD;
|
||||
req->sec_lvl = 0;//PERM(SVC_AUTH, AUTH);
|
||||
req->prf_api_id = TASK_ID_BASS;
|
||||
req->app_task = TASK_APP;
|
||||
req->start_hdl = 0;
|
||||
|
||||
// Set parameters
|
||||
db_cfg = (struct bass_db_cfg* ) req->param;
|
||||
|
||||
// Add a BAS instance
|
||||
db_cfg->bas_nb = 1;
|
||||
// Sending of notifications is supported
|
||||
db_cfg->features[0] = BAS_BATT_LVL_NTF_SUP;
|
||||
|
||||
// Send the message
|
||||
ke_msg_send(req);
|
||||
}
|
||||
|
||||
void app_batt_enable_prf(uint8_t conidx)
|
||||
{
|
||||
app_batt_env.conidx = conidx;
|
||||
|
||||
// Allocate the message
|
||||
struct bass_enable_req * req = KE_MSG_ALLOC(BASS_ENABLE_REQ,
|
||||
prf_dst_task_get(TASK_ID_BASS),
|
||||
TASK_APP,
|
||||
bass_enable_req);
|
||||
|
||||
// Fill in the parameter structure
|
||||
req->conidx = conidx;
|
||||
|
||||
// NTF initial status - Disabled
|
||||
req->ntf_cfg = PRF_CLI_STOP_NTFIND;
|
||||
req->old_batt_lvl[0] = 50;
|
||||
|
||||
// Send the message
|
||||
ke_msg_send(req);
|
||||
}
|
||||
|
||||
void app_batt_send_lvl(uint8_t batt_lvl)
|
||||
{
|
||||
ASSERT_ERR(batt_lvl <= BAS_BATTERY_LVL_MAX);
|
||||
|
||||
// Allocate the message
|
||||
struct bass_batt_level_upd_req * req = KE_MSG_ALLOC(BASS_BATT_LEVEL_UPD_REQ,
|
||||
prf_dst_task_get(TASK_ID_BASS),
|
||||
TASK_APP,
|
||||
bass_batt_level_upd_req);
|
||||
|
||||
// Fill in the parameter structure
|
||||
req->bas_instance = 0;
|
||||
req->batt_level = batt_lvl;
|
||||
|
||||
// Send the message
|
||||
ke_msg_send(req);
|
||||
}
|
||||
|
||||
static int bass_batt_level_ntf_cfg_ind_handler(ke_msg_id_t const msgid,
|
||||
struct bass_batt_level_ntf_cfg_ind const *param,
|
||||
ke_task_id_t const dest_id,
|
||||
ke_task_id_t const src_id)
|
||||
{
|
||||
return (KE_MSG_CONSUMED);
|
||||
}
|
||||
|
||||
static int batt_level_upd_handler(ke_msg_id_t const msgid,
|
||||
struct bass_batt_level_upd_rsp const *param,
|
||||
ke_task_id_t const dest_id,
|
||||
ke_task_id_t const src_id)
|
||||
{
|
||||
return (KE_MSG_CONSUMED);
|
||||
}
|
||||
|
||||
/**
|
||||
****************************************************************************************
|
||||
* @brief
|
||||
*
|
||||
* @param[in] msgid Id of the message received.
|
||||
* @param[in] param Pointer to the parameters of the message.
|
||||
* @param[in] dest_id ID of the receiving task instance (TASK_GAP).
|
||||
* @param[in] src_id ID of the sending task instance.
|
||||
*
|
||||
* @return If the message was consumed or not.
|
||||
****************************************************************************************
|
||||
*/
|
||||
static int app_batt_msg_dflt_handler(ke_msg_id_t const msgid,
|
||||
void const *param,
|
||||
ke_task_id_t const dest_id,
|
||||
ke_task_id_t const src_id)
|
||||
{
|
||||
// Drop the message
|
||||
|
||||
return (KE_MSG_CONSUMED);
|
||||
}
|
||||
|
||||
/*
|
||||
* LOCAL VARIABLE DEFINITIONS
|
||||
****************************************************************************************
|
||||
*/
|
||||
|
||||
/// Default State handlers definition
|
||||
const struct ke_msg_handler app_batt_msg_handler_list[] =
|
||||
{
|
||||
// Note: first message is latest message checked by kernel so default is put on top.
|
||||
{KE_MSG_DEFAULT_HANDLER, (ke_msg_func_t)app_batt_msg_dflt_handler},
|
||||
|
||||
{BASS_BATT_LEVEL_NTF_CFG_IND, (ke_msg_func_t)bass_batt_level_ntf_cfg_ind_handler},
|
||||
{BASS_BATT_LEVEL_UPD_RSP, (ke_msg_func_t)batt_level_upd_handler},
|
||||
};
|
||||
|
||||
const struct app_subtask_handlers app_batt_handlers = APP_HANDLERS(app_batt);
|
||||
|
||||
#endif //BLE_APP_BATT
|
||||
|
||||
/// @} APP
|
||||
@@ -0,0 +1,110 @@
|
||||
/**
|
||||
****************************************************************************************
|
||||
*
|
||||
* @file app_batt.h
|
||||
*
|
||||
* @brief Battery Application Module entry point
|
||||
*
|
||||
* Copyright (C) RivieraWaves 2009-2015
|
||||
*
|
||||
*
|
||||
****************************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef APP_BATT_H_
|
||||
#define APP_BATT_H_
|
||||
|
||||
/**
|
||||
****************************************************************************************
|
||||
* @addtogroup APP
|
||||
* @ingroup RICOW
|
||||
*
|
||||
* @brief Battery Application Module entry point
|
||||
*
|
||||
* @{
|
||||
****************************************************************************************
|
||||
*/
|
||||
|
||||
/*
|
||||
* INCLUDE FILES
|
||||
****************************************************************************************
|
||||
*/
|
||||
|
||||
#include "rwip_config.h" // SW configuration
|
||||
|
||||
#if (BLE_APP_BATT)
|
||||
|
||||
#include <stdint.h> // Standard Integer Definition
|
||||
#include "ke_task.h" // Kernel Task Definition
|
||||
|
||||
/*
|
||||
* STRUCTURES DEFINITION
|
||||
****************************************************************************************
|
||||
*/
|
||||
|
||||
/// Battery Application Module Environment Structure
|
||||
struct app_batt_env_tag
|
||||
{
|
||||
/// Connection handle
|
||||
uint8_t conidx;
|
||||
/// Current Battery Level
|
||||
uint8_t batt_lvl;
|
||||
};
|
||||
|
||||
/*
|
||||
* GLOBAL VARIABLES DECLARATIONS
|
||||
****************************************************************************************
|
||||
*/
|
||||
|
||||
/// Battery Application environment
|
||||
extern struct app_batt_env_tag app_batt_env;
|
||||
|
||||
/// Table of message handlers
|
||||
extern const struct app_subtask_handlers app_batt_handlers;
|
||||
|
||||
/*
|
||||
* FUNCTIONS DECLARATION
|
||||
****************************************************************************************
|
||||
*/
|
||||
|
||||
/**
|
||||
****************************************************************************************
|
||||
*
|
||||
* Health Thermometer Application Functions
|
||||
*
|
||||
****************************************************************************************
|
||||
*/
|
||||
|
||||
/**
|
||||
****************************************************************************************
|
||||
* @brief Initialize Battery Application Module
|
||||
****************************************************************************************
|
||||
*/
|
||||
void app_batt_init(void);
|
||||
|
||||
/**
|
||||
****************************************************************************************
|
||||
* @brief Add a Battery Service instance in the DB
|
||||
****************************************************************************************
|
||||
*/
|
||||
void app_batt_add_bas(void);
|
||||
|
||||
/**
|
||||
****************************************************************************************
|
||||
* @brief Enable the Battery Service
|
||||
****************************************************************************************
|
||||
*/
|
||||
void app_batt_enable_prf(uint8_t conidx);
|
||||
|
||||
/**
|
||||
****************************************************************************************
|
||||
* @brief Send a Battery level value
|
||||
****************************************************************************************
|
||||
*/
|
||||
void app_batt_send_lvl(uint8_t batt_lvl);
|
||||
|
||||
#endif //(BLE_APP_BATT)
|
||||
|
||||
/// @} APP
|
||||
|
||||
#endif // APP_BATT_H_
|
||||
@@ -0,0 +1,56 @@
|
||||
#if 0
|
||||
/*@TRACE*/
|
||||
enum basc_msg_id
|
||||
{
|
||||
/// Start the Battery Service Client Role - at connection
|
||||
// BASC_ENABLE_REQ = MSG_ID(BASC, 0x00),
|
||||
///Confirm that cfg connection has finished with discovery results, or that normal cnx started
|
||||
BASC_ENABLE_RSP = MSG_ID(BASC, 0x01),
|
||||
|
||||
/// Read Characteristic Value Request
|
||||
// BASC_READ_INFO_REQ = MSG_ID(BASC, 0x02),
|
||||
/// Read Characteristic Value Request
|
||||
BASC_READ_INFO_RSP = MSG_ID(BASC, 0x03),
|
||||
|
||||
/// Write Battery Level Notification Configuration Value request
|
||||
// BASC_BATT_LEVEL_NTF_CFG_REQ = MSG_ID(BASC, 0x04),
|
||||
/// Write Battery Level Notification Configuration Value response
|
||||
BASC_BATT_LEVEL_NTF_CFG_RSP = MSG_ID(BASC, 0x05),
|
||||
|
||||
/// Indicate to APP that the Battery Level value has been received
|
||||
BASC_BATT_LEVEL_IND = MSG_ID(BASC, 0x06),
|
||||
};
|
||||
#endif
|
||||
|
||||
void xc_basc_enbale_req()
|
||||
{
|
||||
//send msg
|
||||
BASC_ENABLE_REQ
|
||||
}
|
||||
|
||||
void xc_basc_read_info_req()
|
||||
{
|
||||
//send msg
|
||||
BASC_READ_INFO_REQ
|
||||
}
|
||||
|
||||
void xc_basc_batt_leval_ntf_cfg_req()
|
||||
{
|
||||
//send msg
|
||||
BASC_BATT_LEVEL_NTF_CFG_REQ
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// Default State handlers definition
|
||||
KE_MSG_HANDLER_TAB(basc)
|
||||
{
|
||||
// Note: all messages must be sorted in ID ascending order
|
||||
|
||||
{BASC_ENABLE_RSP, (ke_msg_func_t) xxx_handler },
|
||||
{BASC_READ_INFO_RSP, (ke_msg_func_t) xxx_handler },
|
||||
{BASC_BATT_LEVEL_NTF_CFG_RSP, (ke_msg_func_t) xxx_handler },
|
||||
{BASC_BATT_LEVEL_IND, (ke_msg_func_t) xxx_handler },
|
||||
};
|
||||
|
||||
|
||||
@@ -0,0 +1,546 @@
|
||||
/**
|
||||
****************************************************************************************
|
||||
*
|
||||
* @file app_sec.c
|
||||
*
|
||||
* @brief Application Security Entry Point
|
||||
*
|
||||
* Copyright (C) RivieraWaves 2009-2015
|
||||
*
|
||||
*
|
||||
****************************************************************************************
|
||||
*/
|
||||
|
||||
/**
|
||||
****************************************************************************************
|
||||
* @addtogroup APP
|
||||
* @{
|
||||
****************************************************************************************
|
||||
*/
|
||||
|
||||
/*
|
||||
* INCLUDE FILES
|
||||
****************************************************************************************
|
||||
*/
|
||||
#include "rwip_config.h"
|
||||
#if (BLE_APP_PRESENT)
|
||||
#include "rwip_config.h"
|
||||
|
||||
#include <string.h>
|
||||
#include "co_utils.h"
|
||||
#include "co_math.h"
|
||||
//#include "gapc_task.h" // GAP Controller Task API Definition
|
||||
#include "gap.h" // GAP Definition
|
||||
#include "gapc.h" // GAPC Definition
|
||||
#include "gapc_int.h"
|
||||
#include "prf_types.h"
|
||||
|
||||
#include "app_sec.h" // Application Security API Definition
|
||||
#include "app_task.h" // Application Manager API Definition
|
||||
|
||||
#if (NVDS_SUPPORT)
|
||||
#include "nvds.h" // NVDS API Definitions
|
||||
#endif //(NVDS_SUPPORT)
|
||||
|
||||
#include "app_task.h"
|
||||
uint8_t bond_flag = 0;
|
||||
struct gapc_ltk g_ltk = {0};
|
||||
/*
|
||||
* GLOBAL VARIABLE DEFINITIONS
|
||||
****************************************************************************************
|
||||
*/
|
||||
|
||||
/// Application Security Environment Structure
|
||||
struct app_sec_env_tag app_sec_env;
|
||||
|
||||
/*
|
||||
* GLOBAL FUNCTION DEFINITIONS
|
||||
****************************************************************************************
|
||||
*/
|
||||
|
||||
void app_sec_init()
|
||||
{
|
||||
/*------------------------------------------------------
|
||||
* RETRIEVE BOND STATUS
|
||||
*------------------------------------------------------*/
|
||||
#if (NVDS_SUPPORT)
|
||||
uint8_t length = NVDS_LEN_PERIPH_BONDED;
|
||||
|
||||
// Get bond status from NVDS
|
||||
if (nvds_get(NVDS_TAG_PERIPH_BONDED, &length, (uint8_t *)&app_sec_env.bonded) != NVDS_OK)
|
||||
{
|
||||
// If read value is invalid, set status to not bonded
|
||||
app_sec_env.bonded = false;
|
||||
}
|
||||
|
||||
if ((app_sec_env.bonded != true) && (app_sec_env.bonded != false))
|
||||
{
|
||||
app_sec_env.bonded = false;
|
||||
}
|
||||
LOGI("===bond_state:%d\r\n",app_sec_env.bonded);
|
||||
#endif //(NVDS_SUPPORT)
|
||||
}
|
||||
|
||||
bool app_sec_get_bond_status(void)
|
||||
{
|
||||
return app_sec_env.bonded;
|
||||
}
|
||||
|
||||
#if (NVDS_SUPPORT)
|
||||
void app_sec_remove_bond(void)
|
||||
{
|
||||
#if (BLE_APP_HID)
|
||||
uint16_t ntf_cfg = PRF_CLI_STOP_NTFIND;
|
||||
#endif //(BLE_APP_HID)
|
||||
|
||||
// Check if we are well bonded
|
||||
if (app_sec_env.bonded == true)
|
||||
{
|
||||
// Update the environment variable
|
||||
app_sec_env.bonded = false;
|
||||
|
||||
if (nvds_put(NVDS_TAG_PERIPH_BONDED, NVDS_LEN_PERIPH_BONDED,
|
||||
(uint8_t *)&app_sec_env.bonded) != NVDS_OK)
|
||||
{
|
||||
ASSERT_ERR(0);
|
||||
}
|
||||
|
||||
if (nvds_del(NVDS_TAG_LTK) != NVDS_OK)
|
||||
{
|
||||
ASSERT_ERR(0);
|
||||
}
|
||||
|
||||
if (nvds_del(NVDS_TAG_PEER_BD_ADDRESS) != NVDS_OK)
|
||||
{
|
||||
ASSERT_ERR(0);
|
||||
}
|
||||
|
||||
#if (BLE_APP_HID)
|
||||
if (nvds_put(NVDS_TAG_MOUSE_NTF_CFG, NVDS_LEN_MOUSE_NTF_CFG,
|
||||
(uint8_t *)&ntf_cfg) != NVDS_OK)
|
||||
{
|
||||
ASSERT_ERR(0);
|
||||
}
|
||||
#endif //(BLE_APP_HID)
|
||||
}
|
||||
}
|
||||
#endif //(NVDS_SUPPORT)
|
||||
|
||||
|
||||
/*
|
||||
* MESSAGE HANDLERS
|
||||
****************************************************************************************
|
||||
*/
|
||||
static int app_sec_msg_dflt_handler(ke_msg_id_t const msgid,
|
||||
void *param,
|
||||
ke_task_id_t const dest_id,
|
||||
ke_task_id_t const src_id)
|
||||
{
|
||||
// Drop the message
|
||||
|
||||
return (KE_MSG_CONSUMED);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
static int gapc_bond_req_ind_handler(ke_msg_id_t const msgid,
|
||||
void const * p_param,
|
||||
ke_task_id_t const dest_id,
|
||||
ke_task_id_t const src_id)
|
||||
{
|
||||
struct gapc_bond_req_ind *param = (struct gapc_bond_req_ind *)p_param;
|
||||
LOGI(" [debug] gapc_bond_req_ind_handler,request:0x%x \r\n",param->request);
|
||||
// Prepare the GAPC_BOND_CFM message
|
||||
struct gapc_bond_cfm *cfm = KE_MSG_ALLOC(GAPC_BOND_CFM,
|
||||
src_id, TASK_APP,
|
||||
gapc_bond_cfm);
|
||||
switch (param->request)
|
||||
{
|
||||
case (GAPC_PAIRING_REQ):
|
||||
{
|
||||
cfm->request = GAPC_PAIRING_RSP;
|
||||
{
|
||||
cfm->accept = true;
|
||||
#if (BLE_SEC_CON)
|
||||
cfm->data.pairing_feat.auth = GAP_AUTH_REQ_SEC_CON_BOND;
|
||||
#else // (BLE_SEC_CON)
|
||||
cfm->data.pairing_feat.auth = GAP_AUTH_REQ_NO_MITM_BOND;
|
||||
#endif // (BLE_SEC_CON)
|
||||
|
||||
app_env.sec_con_enabled = true;
|
||||
cfm->data.pairing_feat.iocap = GAP_IO_CAP_NO_INPUT_NO_OUTPUT;//GAP_IO_CAP_KB_ONLY;//GAP_IO_CAP_DISPLAY_ONLY;//GAP_IO_CAP_NO_INPUT_NO_OUTPUT;
|
||||
cfm->data.pairing_feat.key_size = 16;
|
||||
cfm->data.pairing_feat.oob = GAP_OOB_AUTH_DATA_NOT_PRESENT;
|
||||
cfm->data.pairing_feat.sec_req = GAP_SEC1_NOAUTH_PAIR_ENC;//GAP_SEC1_AUTH_PAIR_ENC;//GAP_NO_SEC;
|
||||
cfm->data.pairing_feat.rkey_dist = GAP_KDIST_ENCKEY | GAP_KDIST_IDKEY;
|
||||
cfm->data.pairing_feat.ikey_dist = GAP_KDIST_ENCKEY | GAP_KDIST_IDKEY;
|
||||
}
|
||||
} break;
|
||||
|
||||
case (GAPC_LTK_EXCH):
|
||||
{
|
||||
// Counter
|
||||
uint8_t counter;
|
||||
|
||||
cfm->accept = true;
|
||||
cfm->request = GAPC_LTK_EXCH;
|
||||
|
||||
// Generate all the values
|
||||
cfm->data.ltk.ediv = (uint16_t)co_rand_word();
|
||||
|
||||
for (counter = 0; counter < RAND_NB_LEN; counter++)
|
||||
{
|
||||
cfm->data.ltk.ltk.key[counter] = (uint8_t)co_rand_word();
|
||||
cfm->data.ltk.randnb.nb[counter] = (uint8_t)co_rand_word();
|
||||
}
|
||||
|
||||
for (counter = RAND_NB_LEN; counter < KEY_LEN; counter++)
|
||||
{
|
||||
cfm->data.ltk.ltk.key[counter] = (uint8_t)co_rand_word();
|
||||
}
|
||||
|
||||
#if (1)
|
||||
LOGI( "nvds_put cfm->ediv=0x%x\r\nparam_randnb:",cfm->data.ltk.ediv);
|
||||
for(uint8_t i=0;i<GAP_RAND_NB_LEN;i++)
|
||||
LOGI( "%x",cfm->data.ltk.randnb.nb[i]);
|
||||
LOGI("\r\nltk:");
|
||||
for(uint8_t i=0;i<GAP_KEY_LEN;i++)
|
||||
LOGI( "%x",cfm->data.ltk.ltk.key[i]);
|
||||
LOGI("\r\n");
|
||||
#endif
|
||||
|
||||
#if (NVDS_SUPPORT)
|
||||
uint8_t err = nvds_del(NVDS_TAG_LTK);
|
||||
LOGI("err2 =%d \n", err);
|
||||
// Store the generated value in NVDS
|
||||
if (nvds_put(NVDS_TAG_LTK, NVDS_LEN_LTK, (uint8_t *)&cfm->data.ltk) != NVDS_OK)
|
||||
{
|
||||
ASSERT_ERR(0);
|
||||
}
|
||||
|
||||
// uint8_t buff5[10] = {1,2,3,4,5,6,9,8,9,11};
|
||||
// // LOGI("nvds del:%d \r\n",nvds_del(16));
|
||||
// if (nvds_put(18, 10, buff5) != NVDS_OK)
|
||||
// {
|
||||
// LOGI("77111\r\n");
|
||||
// ASSERT_ERR(0);
|
||||
// }
|
||||
// LOGI("77222\r\n");
|
||||
|
||||
#endif // #if (NVDS_SUPPORT)
|
||||
} break;
|
||||
|
||||
|
||||
case (GAPC_IRK_EXCH):
|
||||
{
|
||||
#if (NVDS_SUPPORT)
|
||||
uint8_t addr_len = BD_ADDR_LEN;
|
||||
#endif //(NVDS_SUPPORT)
|
||||
|
||||
cfm->accept = true;
|
||||
cfm->request = GAPC_IRK_EXCH;
|
||||
|
||||
// Load IRK
|
||||
memcpy(cfm->data.irk.irk.key, app_env.loc_irk, KEY_LEN);
|
||||
|
||||
#if (NVDS_SUPPORT)
|
||||
if (nvds_get(NVDS_TAG_BD_ADDRESS, &addr_len, cfm->data.irk.addr.addr) != NVDS_OK)
|
||||
#endif //(NVDS_SUPPORT)
|
||||
{
|
||||
ASSERT_ERR(0);
|
||||
}
|
||||
// load device address
|
||||
cfm->data.irk.addr.addr_type = (cfm->data.irk.addr.addr[5] & 0xC0) ? ADDR_RAND : ADDR_PUBLIC;
|
||||
} break;
|
||||
|
||||
|
||||
//#if (BLE_APP_HT)
|
||||
case (GAPC_TK_EXCH):
|
||||
{
|
||||
// Generate a PIN Code- (Between 100000 and 999999)
|
||||
uint32_t pin_code = (100000 + (co_rand_word()%900000));
|
||||
|
||||
LOGI("app_sec GAPC_TK_EXCH: tk_type=%d\r\n",param->data.tk_type);
|
||||
cfm->accept = true;
|
||||
cfm->request = GAPC_TK_EXCH;
|
||||
|
||||
// Set the TK value
|
||||
memset(cfm->data.tk.key, 0, KEY_LEN);
|
||||
|
||||
cfm->data.tk.key[0] = (uint8_t)((pin_code & 0x000000FF) >> 0);
|
||||
cfm->data.tk.key[1] = (uint8_t)((pin_code & 0x0000FF00) >> 8);
|
||||
cfm->data.tk.key[2] = (uint8_t)((pin_code & 0x00FF0000) >> 16);
|
||||
cfm->data.tk.key[3] = (uint8_t)((pin_code & 0xFF000000) >> 24);
|
||||
|
||||
LOGI("###GAPC_TK_EXCH pincode=%d\r\n", pin_code);
|
||||
|
||||
} break;
|
||||
//#endif //(BLE_APP_HT)
|
||||
|
||||
default:
|
||||
{
|
||||
ASSERT_ERR(0);
|
||||
} break;
|
||||
}
|
||||
|
||||
// Send the message
|
||||
ke_msg_send(cfm);
|
||||
|
||||
return (KE_MSG_CONSUMED);
|
||||
}
|
||||
|
||||
static int gapc_bond_ind_handler(ke_msg_id_t const msgid,
|
||||
void const *p_param,
|
||||
ke_task_id_t const dest_id,
|
||||
ke_task_id_t const src_id)
|
||||
{
|
||||
struct gapc_bond_ind const *param = (struct gapc_bond_ind const *)p_param;
|
||||
|
||||
LOGI(" [debug] gapc_bond_ind_handler : info=%d\r\n", param->info);
|
||||
switch (param->info)
|
||||
{
|
||||
case (GAPC_PAIRING_SUCCEED):
|
||||
{
|
||||
// Update the bonding status in the environment
|
||||
app_sec_env.bonded = true;
|
||||
bond_flag = 1;
|
||||
LOGI("GAPC_PAIRING_SUCCEED auth=%d,ltk_present=%d\r\n",
|
||||
param->data.pairing.level,param->data.pairing.ltk_present);
|
||||
|
||||
// Update the bonding status in the environment
|
||||
#if (PLF_NVDS)
|
||||
uint8_t err = nvds_del(NVDS_TAG_PERIPH_BONDED);
|
||||
LOGI("err1 =%d \n", err);
|
||||
if (nvds_put(NVDS_TAG_PERIPH_BONDED, NVDS_LEN_PERIPH_BONDED,
|
||||
(uint8_t *)&app_sec_env.bonded) != NVDS_OK)
|
||||
{
|
||||
// An error has occurred during access to the NVDS
|
||||
ASSERT_ERR(0);
|
||||
LOGI("3\n");
|
||||
}
|
||||
LOGI("4\n");
|
||||
// Set the BD Address of the peer device in NVDS
|
||||
uint8_t err2 = nvds_del(NVDS_TAG_PEER_BD_ADDRESS);
|
||||
LOGI("err2 =%d \n", err);
|
||||
struct app_env_tag *app_env = get_app_env();
|
||||
if (nvds_put(NVDS_TAG_PEER_BD_ADDRESS, NVDS_LEN_PEER_BD_ADDRESS,
|
||||
(uint8_t *)gapc_get_bdaddr(app_env->slave_conidx, GAPC_SMP_INFO_PEER)) != NVDS_OK)
|
||||
{
|
||||
// An error has occurred during access to the NVDS
|
||||
ASSERT_ERR(0);
|
||||
LOGI("5\n");
|
||||
}
|
||||
LOGI("6\n");
|
||||
#endif //(PLF_NVDS)
|
||||
|
||||
|
||||
|
||||
} break;
|
||||
|
||||
case (GAPC_REPEATED_ATTEMPT):
|
||||
{
|
||||
// app_disconnect();
|
||||
} break;
|
||||
|
||||
case (GAPC_IRK_EXCH):
|
||||
{
|
||||
|
||||
#if (NVDS_SUPPORT)
|
||||
// Store peer identity in NVDS
|
||||
LOGI("GAPC_IRK_EXCH\r\n");
|
||||
uint8_t err = nvds_del(NVDS_TAG_PEER_IRK);
|
||||
LOGI("err2 =%d \n", err);
|
||||
if (nvds_put(NVDS_TAG_PEER_IRK, NVDS_LEN_PEER_IRK, (uint8_t *)¶m->data.irk.irk.key[0]) != NVDS_OK)
|
||||
|
||||
{
|
||||
LOGI("1\r\n");
|
||||
ASSERT_ERR(0);
|
||||
}
|
||||
LOGI("2\r\n");
|
||||
|
||||
#endif // (NVDS_SUPPORT)
|
||||
} break;
|
||||
|
||||
case (GAPC_PAIRING_FAILED):
|
||||
{
|
||||
// app_sec_send_security_req(0);
|
||||
} break;
|
||||
|
||||
// In Secure Connections we get BOND_IND with SMPC calculated LTK
|
||||
case (GAPC_LTK_EXCH) :
|
||||
{
|
||||
LOGI( "GAPC_LTK_EXCH sec_con_enabled=%d\r\n",app_env.sec_con_enabled);
|
||||
|
||||
LOGI( " param->ediv=0x%x\r\nparam_randnb:",param->data.ltk.ediv);
|
||||
for(uint8_t i=0;i<GAP_RAND_NB_LEN;i++)
|
||||
LOGI( "%x",param->data.ltk.randnb.nb[i]);
|
||||
LOGI("\r\nltk:");
|
||||
for(uint8_t i=0;i<GAP_KEY_LEN;i++)
|
||||
LOGI( "%x",param->data.ltk.ltk.key[i]);
|
||||
LOGI("\r\n");
|
||||
|
||||
#if (0)
|
||||
if (app_env.sec_con_enabled == true)
|
||||
{
|
||||
#if (NVDS_SUPPORT)
|
||||
// Store LTK in NVDS
|
||||
if (nvds_put(NVDS_TAG_LTK, NVDS_LEN_LTK,(uint8_t *)¶m->data.ltk.ltk.key[0]) != NVDS_OK)
|
||||
{
|
||||
ASSERT_ERR(0);
|
||||
}
|
||||
#endif // (NVDS_SUPPORT)
|
||||
}
|
||||
#endif // (BLE_APP_SEC_CON)
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
{
|
||||
ASSERT_ERR(0);
|
||||
} break;
|
||||
}
|
||||
|
||||
return (KE_MSG_CONSUMED);
|
||||
}
|
||||
|
||||
static int gapc_encrypt_req_ind_handler(ke_msg_id_t const msgid,
|
||||
void const *p_param,
|
||||
ke_task_id_t const dest_id,
|
||||
ke_task_id_t const src_id)
|
||||
{
|
||||
struct gapc_encrypt_req_ind const *param = (struct gapc_encrypt_req_ind const *)p_param;
|
||||
LOGI(" [debug] gapc_encrypt_req_ind_handler \r\n");
|
||||
|
||||
#if (NVDS_SUPPORT)
|
||||
// LTK value
|
||||
struct gapc_ltk ltk;
|
||||
// Length
|
||||
uint8_t length = NVDS_LEN_LTK;
|
||||
#endif // #if (NVDS_SUPPORT)
|
||||
|
||||
// Prepare the GAPC_ENCRYPT_CFM message
|
||||
struct gapc_encrypt_cfm *cfm = KE_MSG_ALLOC(GAPC_ENCRYPT_CFM,
|
||||
src_id, TASK_APP,
|
||||
gapc_encrypt_cfm);
|
||||
|
||||
cfm->found = false;
|
||||
|
||||
|
||||
LOGI("app_sec gapc_encrypt_req_ind_handler: bonded=%d\r\n", app_sec_env.bonded);
|
||||
|
||||
|
||||
// if (app_sec_env.bonded)
|
||||
{
|
||||
#if (NVDS_SUPPORT)
|
||||
// Retrieve the required informations from NVDS
|
||||
if (nvds_get(NVDS_TAG_LTK, &length, (uint8_t *)<k) == NVDS_OK)
|
||||
{
|
||||
|
||||
|
||||
LOGI( "nvds_get param->ediv=0x%x,ltk.ediv=0x%x\r\nparam_randnb:",param->ediv,ltk.ediv);
|
||||
for(uint8_t i=0;i<GAP_RAND_NB_LEN;i++)
|
||||
LOGI( "%x",param->rand_nb.nb[i]);
|
||||
LOGI("\r\nltk.randnb.nb:");
|
||||
for(uint8_t i=0;i<GAP_RAND_NB_LEN;i++)
|
||||
LOGI( "%x",ltk.randnb.nb[i]);
|
||||
LOGI("\r\n");
|
||||
|
||||
|
||||
// Check if the provided EDIV and Rand Nb values match with the stored values
|
||||
if ((param->ediv == ltk.ediv) &&
|
||||
!memcmp(¶m->rand_nb.nb[0], <k.randnb.nb[0], sizeof(struct rand_nb)))
|
||||
{
|
||||
LOGI("EDIV and randnb are same!!!\r\n");
|
||||
cfm->found = true;
|
||||
cfm->key_size = 16;
|
||||
memcpy(&cfm->ltk, <k.ltk, sizeof(struct gap_sec_key));
|
||||
bond_flag = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
LOGI("EDIV and randnb not same!!!\r\n");
|
||||
}
|
||||
/*
|
||||
* else we are bonded with another device, disconnect the link
|
||||
*/
|
||||
}
|
||||
else
|
||||
{
|
||||
ASSERT_ERR(0);
|
||||
}
|
||||
#endif // #if (NVDS_SUPPORT)
|
||||
}
|
||||
/*
|
||||
* else the peer device is not known, an error should trigger a new pairing procedure.
|
||||
*/
|
||||
|
||||
// Send the message
|
||||
ke_msg_send(cfm);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
return (KE_MSG_CONSUMED);
|
||||
}
|
||||
|
||||
|
||||
static int gapc_encrypt_ind_handler(ke_msg_id_t const msgid,
|
||||
void const *p_param,
|
||||
ke_task_id_t const dest_id,
|
||||
ke_task_id_t const src_id)
|
||||
{
|
||||
struct gapc_encrypt_ind const *param = (struct gapc_encrypt_ind const *)p_param;
|
||||
LOGI(" [debug] gapc_encrypt_ind_handler \r\n");
|
||||
|
||||
// encryption/ re-encryption succeeded
|
||||
|
||||
LOGI("app_sec gapc_encrypt_ind_handler: auth=%d\r\n", param->pairing_lvl);
|
||||
|
||||
|
||||
// struct gapc_set_le_pkt_size_cmd *req = KE_MSG_ALLOC(GAPC_SET_LE_PKT_SIZE_CMD,
|
||||
// KE_BUILD_ID(TASK_GAPC, KE_IDX_GET(src_id)), TASK_APP,
|
||||
// gapc_set_le_pkt_size_cmd);
|
||||
|
||||
// req->operation = GAPC_SET_LE_PKT_SIZE;
|
||||
// req->tx_octets = 0xFB;
|
||||
// req->tx_time = 2120;
|
||||
|
||||
// // Send the message
|
||||
// ke_msg_send(req);
|
||||
|
||||
|
||||
|
||||
|
||||
return (KE_MSG_CONSUMED);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* LOCAL VARIABLE DEFINITIONS
|
||||
****************************************************************************************
|
||||
*/
|
||||
|
||||
/// Default State handlers definition
|
||||
const struct ke_msg_handler app_sec_msg_handler_list[] =
|
||||
{
|
||||
// Note: first message is latest message checked by kernel so default is put on top.
|
||||
{KE_MSG_DEFAULT_HANDLER, (ke_msg_func_t)app_sec_msg_dflt_handler},
|
||||
|
||||
{GAPC_BOND_REQ_IND, (ke_msg_func_t)gapc_bond_req_ind_handler},
|
||||
{GAPC_BOND_IND, (ke_msg_func_t)gapc_bond_ind_handler},
|
||||
|
||||
{GAPC_ENCRYPT_REQ_IND, (ke_msg_func_t)gapc_encrypt_req_ind_handler},
|
||||
{GAPC_ENCRYPT_IND, (ke_msg_func_t)gapc_encrypt_ind_handler},
|
||||
};
|
||||
|
||||
const struct app_subtask_handlers app_sec_handlers = {&app_sec_msg_handler_list[0], ARRAY_LEN(app_sec_msg_handler_list)};
|
||||
|
||||
#endif // (BLE_APP_PRESENT)
|
||||
|
||||
/// @} APP
|
||||
@@ -0,0 +1,96 @@
|
||||
/**
|
||||
****************************************************************************************
|
||||
*
|
||||
* @file app_sec.h
|
||||
*
|
||||
* @brief Application Security Entry Point
|
||||
*
|
||||
* Copyright (C) RivieraWaves 2009-2015
|
||||
*
|
||||
*
|
||||
****************************************************************************************
|
||||
*/
|
||||
|
||||
/**
|
||||
****************************************************************************************
|
||||
* @addtogroup APP_SEC
|
||||
* @{
|
||||
****************************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef APP_SEC_H_
|
||||
#define APP_SEC_H_
|
||||
|
||||
/*
|
||||
* INCLUDE FILES
|
||||
****************************************************************************************
|
||||
*/
|
||||
|
||||
#include "rwip_config.h"
|
||||
#include <stdint.h> // Standard Integer Definition
|
||||
#include <stdbool.h>
|
||||
/*
|
||||
* DEFINES
|
||||
****************************************************************************************
|
||||
*/
|
||||
|
||||
/*
|
||||
* STRUCTURES DEFINITIONS
|
||||
****************************************************************************************
|
||||
*/
|
||||
|
||||
struct app_sec_env_tag
|
||||
{
|
||||
// Bond status
|
||||
bool bonded;
|
||||
};
|
||||
|
||||
/*
|
||||
* GLOBAL VARIABLE DECLARATIONS
|
||||
****************************************************************************************
|
||||
*/
|
||||
|
||||
/// Application Security Environment
|
||||
extern struct app_sec_env_tag app_sec_env;
|
||||
|
||||
/// Table of message handlers
|
||||
extern const struct app_subtask_handlers app_sec_handlers;
|
||||
|
||||
/*
|
||||
* GLOBAL FUNCTIONS DECLARATIONS
|
||||
****************************************************************************************
|
||||
*/
|
||||
|
||||
/**
|
||||
****************************************************************************************
|
||||
* @brief Initialize the Application Security Module
|
||||
****************************************************************************************
|
||||
*/
|
||||
void app_sec_init(void);
|
||||
|
||||
|
||||
#if (NVDS_SUPPORT)
|
||||
/**
|
||||
****************************************************************************************
|
||||
* @brief Remove all bond data stored in NVDS
|
||||
****************************************************************************************
|
||||
*/
|
||||
void app_sec_remove_bond(void);
|
||||
#endif //(NVDS_SUPPORT)
|
||||
|
||||
/**
|
||||
****************************************************************************************
|
||||
* @brief Send a security request to the peer device. This function is used to require the
|
||||
* central to start the encryption with a LTK that would have shared during a previous
|
||||
* bond procedure.
|
||||
*
|
||||
* @param[in] - conidx: Connection Index
|
||||
****************************************************************************************
|
||||
*/
|
||||
void app_sec_send_security_req(uint8_t conidx);
|
||||
|
||||
|
||||
|
||||
#endif // APP_SEC_H_
|
||||
|
||||
/// @} APP_SEC
|
||||
@@ -0,0 +1,577 @@
|
||||
/**
|
||||
****************************************************************************************
|
||||
*
|
||||
* @file app_task.c
|
||||
*
|
||||
* @brief RW APP Task implementation
|
||||
*
|
||||
* Copyright (C) RivieraWaves 2009-2015
|
||||
*
|
||||
*
|
||||
****************************************************************************************
|
||||
*/
|
||||
#include "rwip_config.h"
|
||||
#if (BLE_APP_PRESENT)
|
||||
#include "app_task.h" // Application Manager Task API
|
||||
#include "app_sec.h"
|
||||
|
||||
/// Application Task Descriptor
|
||||
const struct ke_task_desc TASK_DESC_APP;
|
||||
/// Application Environment Structure
|
||||
struct app_env_tag app_env = {
|
||||
.adv_actv_idx = INVALID_DATA,
|
||||
.slave_conidx = INVALID_DATA,
|
||||
.slave_connected = false,
|
||||
|
||||
};
|
||||
|
||||
struct app_env_tag *get_app_env(void) { return &app_env; }
|
||||
|
||||
static uint8_t gapc_callback(ke_msg_id_t const msgid, void const *param,
|
||||
ke_task_id_t const dest_id,
|
||||
ke_task_id_t const src_id);
|
||||
|
||||
static uint8_t gapm_callback(ke_msg_id_t const msgid, void const *param,
|
||||
ke_task_id_t const dest_id,
|
||||
ke_task_id_t const src_id);
|
||||
|
||||
void app_init()
|
||||
{
|
||||
// Reset the application manager environment
|
||||
memset(&app_env, 0, sizeof(app_env));
|
||||
// Create APP task
|
||||
ke_task_create(TASK_APP, &TASK_DESC_APP);
|
||||
// Initialize Task state
|
||||
ke_state_set(TASK_APP, APP_INIT);
|
||||
#if (NVDS_SUPPORT)
|
||||
// Get the Device Name to add in the Advertising Data (Default one or NVDS
|
||||
// one)
|
||||
// app_env.dev_name_len = APP_DEVICE_NAME_MAX_LEN;
|
||||
// if (nvds_get(NVDS_TAG_DEVICE_NAME, &(app_env.dev_name_len),
|
||||
// app_env.dev_name) != NVDS_OK)
|
||||
#endif //(NVDS_SUPPORT)
|
||||
{
|
||||
// Get default Device Name (No name if not enough space)
|
||||
memcpy(app_env.dev_name, APP_DFLT_DEVICE_NAME,
|
||||
APP_DFLT_DEVICE_NAME_LEN);
|
||||
app_env.dev_name_len = APP_DFLT_DEVICE_NAME_LEN;
|
||||
}
|
||||
// Reset the stack
|
||||
xc_ble_gapm_reset();
|
||||
}
|
||||
|
||||
uint8_t app_get_dev_name(uint8_t *name)
|
||||
{
|
||||
if ((app_env.dev_name_len > 0) &&
|
||||
(app_env.dev_name_len <= APP_DEVICE_NAME_MAX_LEN) && (name != NULL)) {
|
||||
// copy name to provided pointer
|
||||
memcpy(name, app_env.dev_name, APP_DFLT_DEVICE_NAME_LEN);
|
||||
// return name length
|
||||
return app_env.dev_name_len;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
void app_set_dev_name(uint8_t *name, uint8_t name_len)
|
||||
{
|
||||
if ((name_len > 0) && (name_len <= APP_DEVICE_NAME_MAX_LEN) &&
|
||||
(name != NULL)) {
|
||||
memcpy(app_env.dev_name, name, name_len);
|
||||
app_env.dev_name_len = name_len;
|
||||
}
|
||||
}
|
||||
|
||||
// adv
|
||||
void app_create_advertising(void)
|
||||
{
|
||||
if (app_env.adv_state == APP_ADV_STATE_IDLE) {
|
||||
struct gapm_activity_create_adv_cmd param = {0};
|
||||
param.own_addr_type = GAPM_STATIC_ADDR;
|
||||
param.adv_param.type = GAPM_ADV_TYPE_LEGACY;
|
||||
param.adv_param.disc_mode = GAPM_ADV_MODE_GEN_DISC;
|
||||
param.adv_param.prop = GAPM_ADV_PROP_UNDIR_CONN_MASK;
|
||||
param.adv_param.max_tx_pwr = APP_MAX_TX_POWER;
|
||||
param.adv_param.filter_pol = ADV_ALLOW_SCAN_ANY_CON_ANY;
|
||||
param.adv_param.prim_cfg.adv_intv_min = APP_ADV_INT_MIN;
|
||||
param.adv_param.prim_cfg.adv_intv_max = APP_ADV_INT_MAX;
|
||||
param.adv_param.prim_cfg.chnl_map = APP_ADV_CHMAP;//37,38,39
|
||||
param.adv_param.prim_cfg.phy = GAP_PHY_1MBPS;
|
||||
|
||||
xc_ble_advertise_create(¶m);
|
||||
app_env.adv_state = APP_ADV_STATE_STARTING;
|
||||
}
|
||||
}
|
||||
|
||||
void app_set_adv_data(void)
|
||||
{
|
||||
if (app_env.adv_state == APP_ADV_STATE_STARTING) {
|
||||
uint8_t adv_data[ADV_DATA_MAX_LENGTH] = {0};
|
||||
adv_data[0] = APP_DFLT_DEVICE_NAME_LEN + 1;
|
||||
adv_data[1] = GAP_AD_TYPE_COMPLETE_NAME;
|
||||
memcpy(&adv_data[2], APP_DFLT_DEVICE_NAME, APP_DFLT_DEVICE_NAME_LEN);
|
||||
xc_ble_set_adv_data(app_env.adv_actv_idx, APP_DFLT_DEVICE_NAME_LEN + 2,
|
||||
adv_data);
|
||||
app_env.adv_state = APP_ADV_STATE_SETTING_ADV_DATA;
|
||||
}
|
||||
}
|
||||
|
||||
void app_set_scan_rsp_data(void)
|
||||
{
|
||||
if (app_env.adv_state == APP_ADV_STATE_SETTING_ADV_DATA) {
|
||||
uint8_t scan_rsp_data[ADV_DATA_MAX_LENGTH] = {0};
|
||||
scan_rsp_data[0] = MANUFACTURER_DATA_LEN + 1;
|
||||
scan_rsp_data[1] = GAP_AD_TYPE_MANU_SPECIFIC_DATA;
|
||||
memcpy(&scan_rsp_data[2], MANUFACTURER_DATA, MANUFACTURER_DATA_LEN);
|
||||
xc_ble_set_scan_rsp_data(app_env.adv_actv_idx,
|
||||
MANUFACTURER_DATA_LEN + 2, scan_rsp_data);
|
||||
app_env.adv_state = APP_ADV_STATE_SETTING_SCAN_RSP_DATA;
|
||||
}
|
||||
}
|
||||
|
||||
void app_start_advertising(void)
|
||||
{
|
||||
if (app_env.adv_state == APP_ADV_STATE_SETTING_ADV_DATA ||
|
||||
app_env.adv_state == APP_ADV_STATE_SETTING_SCAN_RSP_DATA ||
|
||||
app_env.adv_state == APP_ADV_STATE_STOPPED) {
|
||||
struct gapm_activity_start_cmd param = {0};
|
||||
param.actv_idx = app_env.adv_actv_idx;
|
||||
param.u_param.adv_add_param.duration = ADV_DURATION;
|
||||
|
||||
xc_ble_advertise_start(¶m);
|
||||
app_env.adv_state = APP_ADV_STATE_STARTING;
|
||||
}
|
||||
}
|
||||
|
||||
void app_stop_advertising(void)
|
||||
{
|
||||
if (app_env.adv_state == APP_ADV_STATE_STARTING) {
|
||||
xc_ble_activity_stop(app_env.adv_actv_idx);
|
||||
app_env.adv_state = APP_ADV_STATE_STOPPING;
|
||||
}
|
||||
}
|
||||
|
||||
static uint8_t
|
||||
app_get_handler(const struct app_subtask_handlers *handler_list_desc,
|
||||
ke_msg_id_t msgid, void *p_param, ke_task_id_t src_id)
|
||||
{
|
||||
// Counter
|
||||
uint8_t counter;
|
||||
// Get the message handler function by parsing the message table
|
||||
for (counter = handler_list_desc->msg_cnt; 0 < counter; counter--) {
|
||||
struct ke_msg_handler handler = (struct ke_msg_handler)(
|
||||
*(handler_list_desc->p_msg_handler_tab + counter - 1));
|
||||
if ((handler.id == msgid) || (handler.id == KE_MSG_DEFAULT_HANDLER)) {
|
||||
// If handler is NULL, message should not have been received in this
|
||||
// state
|
||||
ASSERT_ERR(handler.func);
|
||||
return (uint8_t)(handler.func(msgid, p_param, TASK_APP, src_id));
|
||||
}
|
||||
}
|
||||
|
||||
// If we are here no handler has been found, drop the message
|
||||
return (KE_MSG_CONSUMED);
|
||||
}
|
||||
|
||||
/**
|
||||
****************************************************************************************
|
||||
* @brief Handles reception of all messages sent from the lower layers to the
|
||||
*application
|
||||
* @param[in] msgid Id of the message received.
|
||||
* @param[in] p_param Pointer to the parameters of the message.
|
||||
* @param[in] dest_id ID of the receiving task instance
|
||||
* @param[in] src_id ID of the sending task instance.
|
||||
*
|
||||
* @return If the message was consumed or not.
|
||||
****************************************************************************************
|
||||
*/
|
||||
static int app_msg_handler(ke_msg_id_t const msgid, void *p_param,
|
||||
ke_task_id_t const dest_id,
|
||||
ke_task_id_t const src_id)
|
||||
{
|
||||
// Retrieve identifier of the task from received message
|
||||
ke_task_id_t src_task_id = MSG_T(msgid);
|
||||
// Message policy
|
||||
uint8_t msg_pol = KE_MSG_CONSUMED;
|
||||
switch (src_task_id) {
|
||||
case TASK_ID_GAPM: {
|
||||
msg_pol = gapm_callback(msgid, p_param, dest_id, src_id);
|
||||
} break;
|
||||
case TASK_ID_GAPC: {
|
||||
if ((msgid >= GAPC_BOND_CMD) &&
|
||||
(msgid <= GAPC_SECURITY_IND)){
|
||||
// Call the Security Module
|
||||
msg_pol = app_get_handler(&app_sec_handlers, msgid, p_param, src_id);
|
||||
}else{
|
||||
msg_pol = gapc_callback(msgid, p_param, dest_id, src_id);
|
||||
}
|
||||
|
||||
} break;
|
||||
case TASK_ID_GATT: {
|
||||
|
||||
} break;
|
||||
#if (BLE_APP_HT)
|
||||
case (TASK_ID_HTPT): {
|
||||
// Call the Health Thermometer Module
|
||||
msg_pol = app_get_handler(&app_ht_handlers, msgid, p_param, src_id);
|
||||
} break;
|
||||
#endif //(BLE_APP_HT)
|
||||
|
||||
#if (BLE_APP_DIS)
|
||||
case (TASK_ID_DISS): {
|
||||
// Call the Device Information Module
|
||||
msg_pol = app_get_handler(&app_dis_handlers, msgid, p_param, src_id);
|
||||
} break;
|
||||
#endif //(BLE_APP_DIS)
|
||||
|
||||
#if (BLE_APP_HID)
|
||||
case (TASK_ID_HOGPD): {
|
||||
// Call the HID Module
|
||||
msg_pol = app_get_handler(&app_hid_handlers, msgid, p_param, src_id);
|
||||
} break;
|
||||
#endif //(BLE_APP_HID)
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return (msg_pol);
|
||||
}
|
||||
|
||||
/**
|
||||
****************************************************************************************
|
||||
* @brief Handles GAP manager command complete events.
|
||||
*
|
||||
* @param[in] msgid Id of the message received.
|
||||
* @param[in] p_param Pointer to the parameters of the message.
|
||||
* @param[in] dest_id ID of the receiving task instance (TASK_GAP).
|
||||
* @param[in] src_id ID of the sending task instance.
|
||||
****************************************************************************************
|
||||
*/
|
||||
static void gapm_cmp_evt(ke_msg_id_t const msgid,
|
||||
struct gapm_cmp_evt const *p_param,
|
||||
ke_task_id_t const dest_id, ke_task_id_t const src_id)
|
||||
{
|
||||
LOGI(" app gapm_cmp_evt operation:0x%02x, status :0x%02x\r\n",
|
||||
p_param->operation, p_param->status);
|
||||
if (p_param->status == GAP_ERR_NO_ERROR) {
|
||||
switch (p_param->operation) {
|
||||
// Reset completed
|
||||
case GAPM_RESET: {
|
||||
struct gapm_set_dev_config_cmd cfg_param = {
|
||||
.role = GAP_ROLE_PERIPHERAL,
|
||||
.sugg_max_tx_octets = BLE_MAX_OCTETS,
|
||||
// .sugg_max_tx_time = BLE_MAX_TIME,
|
||||
.sugg_max_tx_time = 2120,
|
||||
// .pairing_mode = GAPM_PAIRING_DISABLE,
|
||||
|
||||
#if (BLE_SEC_CON)
|
||||
.pairing_mode = GAPM_PAIRING_SEC_CON ,
|
||||
#else // (BLE_SEC_CON)
|
||||
.pairing_mode = GAPM_PAIRING_LEGACY ,
|
||||
#endif // (BLE_SEC_CON)
|
||||
|
||||
|
||||
};
|
||||
xc_ble_set_dev_config(&cfg_param);
|
||||
|
||||
// ((*(volatile uint32_t *)(0x53000050)) = (1<<15) | (0x7<<8) | (1 << 7) | (0x3 << 0));
|
||||
((*(volatile uint32_t *)(0x53000050)) = (1<<15) | (0x3<<8) | (1 << 7) | ( 0x1b<< 0));
|
||||
// ((*(volatile uint32_t *)(0x53000050)) = (1<<15) | (0x5<<8) | (1 << 7) | (0x5 << 0));
|
||||
} break;
|
||||
case GAPM_SET_DEV_CONFIG: {
|
||||
if (!ota_svc_add() && !custom_svc_add()) {
|
||||
app_create_advertising();
|
||||
}
|
||||
} break;
|
||||
case GAPM_SET_ADV_DATA: {
|
||||
app_start_advertising();
|
||||
} break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
ASSERT_ERR(0);
|
||||
}
|
||||
}
|
||||
|
||||
static void gapc_get_device_info_req_ind(
|
||||
ke_msg_id_t const msgid, struct gapc_get_dev_info_req_ind const *param,
|
||||
ke_task_id_t const dest_id, ke_task_id_t const src_id)
|
||||
{
|
||||
uint8_t conidx = KE_IDX_GET(src_id);
|
||||
struct gapc_get_dev_info_cfm cfm = {0};
|
||||
switch (param->req) {
|
||||
case GAPC_DEV_NAME: {
|
||||
cfm.req = param->req;
|
||||
cfm.token = param->token;
|
||||
cfm.status = GAP_ERR_NO_ERROR;
|
||||
cfm.info.name.value_length = app_get_dev_name(cfm.info.name.value);
|
||||
xc_ble_get_dev_info_cfm(conidx, &cfm);
|
||||
} break;
|
||||
|
||||
case GAPC_DEV_APPEARANCE: {
|
||||
cfm.req = param->req;
|
||||
cfm.info.appearance = DEV_APPEARANCE;
|
||||
cfm.token = param->token;
|
||||
cfm.status = GAP_ERR_NO_ERROR;
|
||||
xc_ble_get_dev_info_cfm(conidx, &cfm);
|
||||
} break;
|
||||
|
||||
case GAPC_DEV_SLV_PREF_PARAMS: {
|
||||
cfm.req = param->req;
|
||||
cfm.info.slv_pref_params.con_intv_min = BLE_UAPDATA_MIN_INTVALUE;
|
||||
// Slave preferred Connection interval Max
|
||||
cfm.info.slv_pref_params.con_intv_max = BLE_UAPDATA_MAX_INTVALUE;
|
||||
// Slave preferred Connection latency
|
||||
cfm.info.slv_pref_params.slave_latency = BLE_UAPDATA_LATENCY;
|
||||
// Slave preferred Link supervision timeout
|
||||
cfm.info.slv_pref_params.conn_timeout = BLE_UAPDATA_TIMEOUT;
|
||||
cfm.token = param->token;
|
||||
cfm.status = GAP_ERR_NO_ERROR;
|
||||
xc_ble_get_dev_info_cfm(conidx, &cfm);
|
||||
} break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void gapm_profile_add_ind(ke_msg_id_t const msgid, void const *param,
|
||||
ke_task_id_t const dest_id,
|
||||
ke_task_id_t const src_id)
|
||||
{
|
||||
struct gapm_profile_added_ind *p_param =
|
||||
(struct gapm_profile_added_ind *)param;
|
||||
// Current State
|
||||
ke_state_t state = ke_state_get(dest_id);
|
||||
LOGI("gapm_profile_add_ind profile_task_id:0x%x,state=0x%x\r\n",
|
||||
p_param->prf_task_id, state);
|
||||
switch (p_param->prf_task_id) {
|
||||
case TASK_ID_BASS: {
|
||||
|
||||
} break;
|
||||
case TASK_ID_BASC: {
|
||||
|
||||
} break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void gapm_activity_created_ind(ke_msg_id_t const msgid,
|
||||
void const *param,
|
||||
ke_task_id_t const dest_id,
|
||||
ke_task_id_t const src_id)
|
||||
{
|
||||
struct gapm_activity_created_ind *p_param =
|
||||
(struct gapm_activity_created_ind *)param;
|
||||
LOGI(" gapm_activity_created_ind actv_idx = %d,actv_type = %d \r\n",
|
||||
p_param->actv_idx, p_param->actv_type);
|
||||
switch (p_param->actv_type) {
|
||||
case GAPM_ACTV_TYPE_ADV: {
|
||||
app_env.adv_actv_idx = p_param->actv_idx;
|
||||
app_set_adv_data();
|
||||
} break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void gapm_activity_stop_ind(ke_msg_id_t const msgid, void const *param,
|
||||
ke_task_id_t const dest_id,
|
||||
ke_task_id_t const src_id)
|
||||
{
|
||||
struct gapm_activity_stopped_ind *p_param =
|
||||
(struct gapm_activity_stopped_ind *)param;
|
||||
LOGI(" actv_id=%d actv_type=%d, reason=0x%x\r\n", p_param->actv_idx,
|
||||
p_param->actv_type, p_param->reason);
|
||||
if (p_param->actv_idx == app_env.adv_actv_idx) {
|
||||
app_env.adv_state = APP_ADV_STATE_STOPPED;
|
||||
}
|
||||
}
|
||||
|
||||
static uint8_t gapm_callback(ke_msg_id_t const msgid, void const *param,
|
||||
ke_task_id_t const dest_id,
|
||||
ke_task_id_t const src_id)
|
||||
{
|
||||
switch (msgid) {
|
||||
case GAPM_CMP_EVT:
|
||||
gapm_cmp_evt(msgid, param, dest_id, src_id);
|
||||
break;
|
||||
case GAPM_DEV_BDADDR_IND:
|
||||
LOGI("GAPM_DEV_BDADDR_IND\r\n");
|
||||
break;
|
||||
case GAPM_GEN_RAND_NB_IND: {
|
||||
struct gapm_gen_rand_nb_ind *p_param =
|
||||
(struct gapm_gen_rand_nb_ind *)param;
|
||||
// First part of IRK
|
||||
if (app_env.rand_cnt == 1) {
|
||||
memcpy(&app_env.loc_irk[0], &p_param->randnb.nb[0], 8);
|
||||
}
|
||||
// Second part of IRK
|
||||
else if (app_env.rand_cnt == 2) {
|
||||
memcpy(&app_env.loc_irk[8], &p_param->randnb.nb[0], 8);
|
||||
}
|
||||
} break;
|
||||
case GAPM_ACTIVITY_CREATED_IND: {
|
||||
gapm_activity_created_ind(msgid, param, dest_id, src_id);
|
||||
} break;
|
||||
case GAPM_ACTIVITY_STOPPED_IND: {
|
||||
gapm_activity_stop_ind(msgid, param, dest_id, src_id);
|
||||
} break;
|
||||
case GAPM_SCAN_REQUEST_IND:
|
||||
LOGI("GAPM_SCAN_REQUEST_IND\r\n");
|
||||
break;
|
||||
case GAPM_PROFILE_ADDED_IND: {
|
||||
gapm_profile_add_ind(msgid, param, dest_id, src_id);
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return (KE_MSG_CONSUMED);
|
||||
}
|
||||
|
||||
static uint8_t gapc_callback(ke_msg_id_t const msgid, void const *param,
|
||||
ke_task_id_t const dest_id,
|
||||
ke_task_id_t const src_id)
|
||||
{
|
||||
uint8_t conidx = KE_IDX_GET(src_id);
|
||||
switch (msgid) {
|
||||
case GAPC_CMP_EVT: {
|
||||
struct gapc_cmp_evt const *p_param = (struct gapc_cmp_evt const *)param;
|
||||
LOGI("GAPC_CMP_EVT operation = 0x%x, status = 0x%x conidx = "
|
||||
"0x%x\r\n",
|
||||
p_param->operation, p_param->status, conidx);
|
||||
} break;
|
||||
case GAPC_CONNECTION_REQ_IND: {
|
||||
extern void ota_clear_status();
|
||||
ota_clear_status();
|
||||
|
||||
struct gapc_connection_req_ind *p_param =
|
||||
(struct gapc_connection_req_ind *)param;
|
||||
LOGI(" GAPC_CONNECTION_REQ_IND conhdl = x%x, conidx = 0x%x ",
|
||||
p_param->conhdl, conidx);
|
||||
LOGI("conn_intv:%d, role=%d addr: ", p_param->con_interval,
|
||||
p_param->role);
|
||||
// DUMP_DATA_PRINTF(&(p_param->peer_addr.addr[0]), GAP_BD_ADDR_LEN);
|
||||
// device as slave
|
||||
if (p_param->role == GAPM_ROLE_SLAVE) {
|
||||
app_env.slave_conidx = conidx;
|
||||
app_env.slave_connected = true;
|
||||
}
|
||||
// Check if the received connection index is valid
|
||||
if (conidx != GAP_INVALID_CONIDX) {
|
||||
struct gapc_connection_cfm cfm = {0};
|
||||
cfm.pairing_lvl = GAP_PAIRING_UNAUTH;
|
||||
xc_ble_conn_cfm(conidx, &cfm);
|
||||
}
|
||||
// #if (BLE_SEC_CON)
|
||||
// xc_ble_req_security(conidx, GAP_AUTH_REQ_SEC_CON_BOND);
|
||||
// #else // (BLE_SEC_CON)
|
||||
// xc_ble_req_security(conidx, GAP_AUTH_REQ_NO_MITM_BOND);
|
||||
// #endif // (BLE_SEC_CON)
|
||||
|
||||
// xc_ble_set_pkt_size(conidx, 251, 2120);
|
||||
|
||||
} break;
|
||||
case GAPC_DISCONNECT_IND: {
|
||||
struct gapc_disconnect_ind *p_param =
|
||||
(struct gapc_disconnect_ind *)param;
|
||||
LOGI("GAPC_DISCONNECT_IND conidx = 0x%x, reason = 0x%x\r\n", conidx,
|
||||
p_param->reason);
|
||||
if (conidx == app_env.slave_conidx) {
|
||||
app_env.slave_conidx = INVALID_DATA;
|
||||
app_env.slave_connected = false;
|
||||
app_start_advertising();
|
||||
}
|
||||
} break;
|
||||
case GAPC_GET_DEV_INFO_REQ_IND: {
|
||||
gapc_get_device_info_req_ind(msgid, param, dest_id, src_id);
|
||||
} break;
|
||||
case GAPC_SET_DEV_INFO_REQ_IND: {
|
||||
struct gapc_set_dev_info_req_ind *p_param =
|
||||
(struct gapc_set_dev_info_req_ind *)param;
|
||||
struct gapc_set_dev_info_cfm cfm = {0};
|
||||
LOGI("GAPC_SET_DEV_INFO_REQ_IND param->req=0x%x,conidx=0x%x\r\n",
|
||||
p_param->req, conidx);
|
||||
xc_ble_set_dev_info_cfm(conidx, &cfm);
|
||||
} break;
|
||||
case GAPC_PARAM_UPDATE_REQ_IND: {
|
||||
struct gapc_param_update_req_ind *p_param =
|
||||
(struct gapc_param_update_req_ind *)param;
|
||||
struct gapc_param_update_cfm cfm = {0};
|
||||
LOGI("GAPC_PARAM_UPDATE_REQ_IND "
|
||||
"conidx=0x%x,intv_max=0x%x,intv_min=0x%x",
|
||||
conidx, p_param->intv_max, p_param->intv_min);
|
||||
LOGI("latency=0x%x,time_out=0x%x\r\n", p_param->latency,
|
||||
p_param->time_out);
|
||||
// Check if the received Connection Handle was valid
|
||||
if (app_env.conidx != GAP_INVALID_CONIDX) {
|
||||
cfm.accept = true;
|
||||
cfm.ce_len_min = CE_LEN_MIN;
|
||||
cfm.ce_len_max = CE_LEN_MAX;
|
||||
xc_ble_param_update_cfm(conidx, &cfm);
|
||||
}
|
||||
} break;
|
||||
case GAPC_PARAM_UPDATED_IND: {
|
||||
struct gapc_param_updated_ind *p_param =
|
||||
(struct gapc_param_updated_ind *)param;
|
||||
LOGI("GAPC_PARAM_UPDATED_IND "
|
||||
"conidx=0x%x,con_interval=0x%x,con_latency=0x%x ",
|
||||
conidx, p_param->con_interval, p_param->con_latency);
|
||||
LOGI("sup_to=0x%x\r\n", p_param->sup_to);
|
||||
} break;
|
||||
case GAPC_LE_PKT_SIZE_IND: {
|
||||
struct gapc_le_pkt_size_ind *p_param =
|
||||
(struct gapc_le_pkt_size_ind *)param;
|
||||
LOGI("GAPC_LE_PKT_SIZE_IND "
|
||||
"conidx=0x%x, max_rx_octets:%d",
|
||||
conidx, p_param->max_rx_octets);
|
||||
LOGI("max_rx_time:%d,max_tx_octets:%d, "
|
||||
"max_tx_time :%d\r\n",
|
||||
p_param->max_rx_time, p_param->max_tx_octets,
|
||||
p_param->max_tx_time);
|
||||
} break;
|
||||
case GAPC_CON_RSSI_IND: {
|
||||
struct gapc_con_rssi_ind *p_param = (struct gapc_con_rssi_ind *)param;
|
||||
LOGI("GAPC_CON_RSSI_IND conidx=0x%x,rssi = %d\r\n", conidx,
|
||||
p_param->rssi);
|
||||
} break;
|
||||
case GAPC_LE_PHY_IND: {
|
||||
struct gapc_le_phy_ind *p_param = (struct gapc_le_phy_ind *)param;
|
||||
LOGI("GAPC_LE_PHY_IND conidx=0x%x tx phy:%d rx phy:%d \r\n", conidx,
|
||||
p_param->tx_phy, p_param->rx_phy);
|
||||
} break;
|
||||
case GAPC_BOND_REQ_IND:
|
||||
// gapc_bond_req_ind_handler(msgid, p_param, dest_id,src_id)
|
||||
break;
|
||||
case GAPC_BOND_IND:
|
||||
// gapc_bond_ind_handler(msgid, p_param, dest_id,src_id)
|
||||
break;
|
||||
case GAPC_SECURITY_IND:
|
||||
// gapc_security_ind_handler(msgid, p_param, dest_id,src_id)
|
||||
break;
|
||||
case GAPC_ENCRYPT_REQ_IND:
|
||||
// gapc_encrypt_req_ind_handler(msgid, p_param, dest_id,src_id)
|
||||
break;
|
||||
case GAPC_ENCRYPT_IND:
|
||||
// gapc_encrypt_ind_handler(msgid, p_param, dest_id,src_id)
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return (KE_MSG_CONSUMED);
|
||||
}
|
||||
|
||||
/* Default State handlers definition. */
|
||||
KE_MSG_HANDLER_TAB(app){
|
||||
{KE_MSG_DEFAULT_HANDLER, (ke_msg_func_t)app_msg_handler},
|
||||
};
|
||||
|
||||
/* Defines the place holder for the states of all the task instances. */
|
||||
ke_state_t app_state[APP_IDX_MAX];
|
||||
|
||||
// Application task descriptor
|
||||
const struct ke_task_desc TASK_DESC_APP = {app_msg_handler_tab, app_state,
|
||||
APP_IDX_MAX,
|
||||
ARRAY_LEN(app_msg_handler_tab)};
|
||||
#endif // (BLE_APP_PRESENT)
|
||||
/// @} APPTASK
|
||||
@@ -0,0 +1,294 @@
|
||||
/**
|
||||
****************************************************************************************
|
||||
*
|
||||
* @file arch_main.c
|
||||
*
|
||||
* @brief Main loop of the application.
|
||||
*
|
||||
* Copyright (C) RivieraWaves 2009-2015
|
||||
*
|
||||
*
|
||||
****************************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* INCLUDES
|
||||
****************************************************************************************
|
||||
*/
|
||||
|
||||
#include "rwip_config.h" // RW SW configuration
|
||||
#include "xc_drv_pwr.h"
|
||||
#if (USE_ROM_FLASH)
|
||||
#include "xc6xxx_fmc_spi.h"
|
||||
#endif // (USE_ROM_FLASH)
|
||||
#include "app_task.h"
|
||||
#include "rom_port.h"
|
||||
|
||||
#if (BLE_TEST_MODE_SUPPORT)
|
||||
#include "uart.h" // UART initialization
|
||||
#endif // (BLE_TEST_MODE_SUPPORT)
|
||||
|
||||
#if (BLE_EMB_PRESENT || BT_EMB_PRESENT)
|
||||
#include "rf.h" // RF initialization
|
||||
#endif // BLE_EMB_PRESENT || BT_EMB_PRESENT
|
||||
|
||||
#if (PLF_NVDS)
|
||||
#include "nvds.h" // NVDS definitions
|
||||
#endif // PLF_NVDS
|
||||
|
||||
#include "xc6xxx.h"
|
||||
|
||||
#include "gpio.h"
|
||||
#include "xc_drv_gpio.h"
|
||||
/**
|
||||
****************************************************************************************
|
||||
* @addtogroup DRIVERS
|
||||
* @{
|
||||
*
|
||||
*
|
||||
* ****************************************************************************************
|
||||
*/
|
||||
|
||||
/*
|
||||
* DEFINES
|
||||
****************************************************************************************
|
||||
*/
|
||||
/// NVDS location in FLASH : 0x000E0000 (896KB (1Mo - 128KB))
|
||||
#define NVDS_FLASH_ADDRESS (0x0003F800)//((256-2)*1024)
|
||||
|
||||
/// NVDS size in RAM : 0x00010000 (128KB)
|
||||
#define NVDS_FLASH_SIZE (0x00000800)
|
||||
|
||||
/*
|
||||
* GLOBAL VARIABLE DEFINITIONS
|
||||
****************************************************************************************
|
||||
*/
|
||||
|
||||
/*
|
||||
* MAIN FUNCTION
|
||||
****************************************************************************************
|
||||
*/
|
||||
|
||||
/**
|
||||
****************************************************************************************
|
||||
* @brief RW main function.
|
||||
*
|
||||
* This function is called right after the booting process has completed.
|
||||
*
|
||||
* @return status exit status
|
||||
****************************************************************************************
|
||||
*/
|
||||
|
||||
#define clrbit(x,y) ((x) &= ~(1<<(y)))
|
||||
#define AHB_CTL clrbit(*(uint32_t volatile*)(0x40000000+0x130),0)
|
||||
#define _TOSTRING(s) #s
|
||||
#define TOSTRING(s) _TOSTRING(s)
|
||||
|
||||
extern void clock_init(void);
|
||||
extern uint8_t ota_flag;
|
||||
void rc32k_testpin_cfg(void)
|
||||
{
|
||||
printf("rc 32k \n");
|
||||
GPIO_InitCfg_t gpio_cfg = {0};
|
||||
|
||||
gpio_cfg.Mux = GPIO_Mux0;
|
||||
gpio_cfg.Dir = GPIO_DIR_OUTPUT;
|
||||
gpio_cfg.FunSel = GPIO_Dx;
|
||||
gpio_cfg.Int = NOT_INT;
|
||||
gpio_cfg.Pull = GPIO_PULLDOWN;
|
||||
gpio_cfg.Pin = 4;
|
||||
xc_gpio_init(&gpio_cfg);
|
||||
|
||||
xc_gpio_write_pin(4, 1);
|
||||
xc_gpio_write_pin(4, 0);
|
||||
|
||||
xc_gpio_write_pin(4, 1);
|
||||
xc_gpio_write_pin(4, 0);
|
||||
|
||||
xc_gpio_fun_sel(4, GPIO_Dx);
|
||||
xc_gpio_mux_ctl(4, GPIO_Mux3); // en test_pin[0]
|
||||
*((uint32_t volatile *)0x40000174) = 26;
|
||||
}
|
||||
|
||||
void flash_init()
|
||||
{
|
||||
FMC_SPI_Init_Oprt();
|
||||
FMC_SPI_Flash_WakeUp();
|
||||
|
||||
uint32_t mid = 0;
|
||||
FMC_SPI_Flash_RDID((uint8_t *)&mid);
|
||||
LOGI("Flash RDID: 0x%08x\n", mid);
|
||||
|
||||
uint8_t ruid[16];
|
||||
FMC_SPI_Flash_RUID(ruid);
|
||||
LOGI("Flash RUID11: ");
|
||||
for (int i = 0; i < 16; i++)
|
||||
{
|
||||
LOGI("%02x ", ruid[i]);
|
||||
}
|
||||
LOGI("\n");
|
||||
}
|
||||
|
||||
void app_uart_init(void)
|
||||
{
|
||||
GPIO_InitCfg_t gpio_cfg = {0};
|
||||
|
||||
gpio_cfg.Mux = GPIO_Mux0;
|
||||
gpio_cfg.Pull = GPIO_PULLUP;
|
||||
gpio_cfg.Int = NOT_INT;
|
||||
gpio_cfg.FunSel = UART0_TX;
|
||||
|
||||
gpio_cfg.Pin = GPIO_18;
|
||||
gpio_cfg.Dir = GPIO_DIR_OUTPUT;
|
||||
xc_gpio_init(&gpio_cfg);
|
||||
|
||||
gpio_cfg.FunSel = UART0_RX;
|
||||
gpio_cfg.Pin = GPIO_19;
|
||||
gpio_cfg.Dir = GPIO_DIR_INPUT;
|
||||
xc_gpio_init(&gpio_cfg);
|
||||
|
||||
UART_InitCfg_t uart_cfg = {0};
|
||||
|
||||
uart_cfg.Parity = UART_PARITY_DISABLE;
|
||||
uart_cfg.StopBits = UART_STOP_1_BITS;
|
||||
uart_cfg.WordLength = UART_DATA_8_BITS;
|
||||
uart_cfg.BaudRate = UART_BAUDRATE_115200;
|
||||
uart_cfg.HardwareFlowControl = UART_HWFC_DISABLE;
|
||||
|
||||
xc_uart_init(UART0_IDX, &uart_cfg);
|
||||
}
|
||||
|
||||
/* Zero the host global variable. */
|
||||
void rom_env_host_init()
|
||||
{
|
||||
uint8_t *ptr = 0x10001400;
|
||||
memset(ptr, 0, 0x10004700 - 0x10001400); //ram code 需要手动搬移
|
||||
|
||||
ptr = (uint32_t *)(0x10000800);
|
||||
memset(ptr, 0, 0x10001300 - 0x10000800);
|
||||
|
||||
rom_env.stack_printf = printf;
|
||||
rom_env.stack_printf("%s %d\n", __func__, __LINE__);
|
||||
}
|
||||
|
||||
/* Add a protection field to determine if the stack is overflowing. */
|
||||
void stack_tag()
|
||||
{
|
||||
uint32_t StackPos;
|
||||
__IO uint32_t *pStack;
|
||||
StackPos = __get_MSP();
|
||||
printf("StackPos=0x%x\n", StackPos);
|
||||
// 0x800 is the size of the stack, which should be changed according to the configuration of the project.
|
||||
pStack = (uint32_t *)(StackPos - 0x800);
|
||||
*pStack = 0xa5a5a5a5;
|
||||
}
|
||||
|
||||
void board_init()
|
||||
{
|
||||
clock_init();
|
||||
app_uart_init();
|
||||
LOGI("sdk version: %s build time: %s %s\n", TOSTRING(SDK_VERSION), __DATE__, __TIME__);
|
||||
|
||||
stack_tag();
|
||||
rom_env_host_init();
|
||||
#if (SLEEP_ENABLE)
|
||||
xc_rc32k_calib_by_hw();
|
||||
//xc_rc32k_calib_by_soft();
|
||||
#endif // (SLEEP_ENABLE)
|
||||
rom_env_init();
|
||||
uint8_t mac_addr[] = {0xac, 0xc3, 0x33, 0x46, 0x55, 0x66};
|
||||
memcpy(co_default_bdaddr.addr, mac_addr, 6);
|
||||
AHB_CTL;
|
||||
/*
|
||||
************************************************************************************
|
||||
* Platform initialization
|
||||
************************************************************************************
|
||||
*/
|
||||
|
||||
// Initialize random process
|
||||
srand(1);
|
||||
}
|
||||
|
||||
void bluetooth_init()
|
||||
{
|
||||
uint32_t error = RESET_NO_ERROR;
|
||||
#if (PLF_NVDS)
|
||||
flash_init();
|
||||
// Initialize NVDS module
|
||||
nvds_init((uint8_t *)NVDS_FLASH_ADDRESS, NVDS_FLASH_SIZE);
|
||||
#endif // PLF_NVDS
|
||||
/*
|
||||
************************************************************************************
|
||||
* RW SW stack initialization
|
||||
************************************************************************************
|
||||
*/
|
||||
NVIC_SetPriority((IRQn_Type)BLE_IRQn, 0);
|
||||
NVIC_EnableIRQ((IRQn_Type)BLE_IRQn);
|
||||
#if (!HCI_TEST_NO_IP)
|
||||
// Initialize modem
|
||||
modem_init();
|
||||
#endif
|
||||
// Initialize RF
|
||||
#if (BT_EMB_PRESENT || BLE_EMB_PRESENT)
|
||||
rf_init(&rwip_rf);
|
||||
#endif //BT_EMB_PRESENT || BLE_EMB_PRESENT
|
||||
// Initialize RW SW stack
|
||||
rwip_init(error);
|
||||
#if (BLE_TEST_MODE_SUPPORT)
|
||||
enter_test_mode();
|
||||
#else // (BLE_TEST_MODE_SUPPORT)
|
||||
// Initialize APP
|
||||
app_init();
|
||||
#endif // (BLE_TEST_MODE_SUPPORT)
|
||||
// finally start interrupt handling
|
||||
GLOBAL_INT_START();
|
||||
}
|
||||
|
||||
int main(void)
|
||||
{
|
||||
/* Set the broadcast address of the device. */
|
||||
board_init();
|
||||
bluetooth_init();
|
||||
|
||||
|
||||
app_ir_init();
|
||||
app_key_init();
|
||||
// app_pga_init();
|
||||
// delay_ms(1);//Wait for the pga to stabilize
|
||||
|
||||
//app_audio_record_init();
|
||||
|
||||
app_pwm_init();
|
||||
timer0_2_init();
|
||||
#if (SLEEP_ENABLE)
|
||||
// sleep_init();
|
||||
#endif // (SLEEP_ENABLE)
|
||||
// rc32k_testpin_cfg();
|
||||
#if (BLE_APP_PRESENT)
|
||||
// rf_test_pin_init();
|
||||
|
||||
while (1)
|
||||
{
|
||||
// schedule all pending events
|
||||
rwip_schedule();
|
||||
xc_ota_schedule();
|
||||
// LOGI("GAPM_DEV_BDADDR_IND\r\n");
|
||||
#if (SLEEP_ENABLE)
|
||||
if (!ota_flag)
|
||||
{
|
||||
// sleep_schedule();
|
||||
// feedback();
|
||||
}
|
||||
#endif // (SLEEP_ENABLE)
|
||||
//用户应用程序
|
||||
// scan_uart();
|
||||
ble_message_process();//BLE接收信息处理
|
||||
ir_message_process();//ir遥控按键处理
|
||||
key_message_process(app_key_message_get());//按键检测处理
|
||||
app_record_process();//ADC_MIC检测处理
|
||||
}
|
||||
#endif // (BLE_APP_PRESENT)
|
||||
}
|
||||
|
||||
/// @} DRIVERS
|
||||
@@ -0,0 +1,159 @@
|
||||
#ifndef _FFT_C_
|
||||
#define _FFT_C_
|
||||
|
||||
#include <math.h>
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Macros
|
||||
-------------------------------------------------------------------------------------*/
|
||||
#define FFTN 32 //fft的点数
|
||||
#define PWE 5 //2^PWE=NFFT
|
||||
#define LEN FFTN*2
|
||||
#define FRE 2000 //采样频率
|
||||
#define RS 62.5 //分辨率=FRE/FFTN
|
||||
|
||||
#define M_PI 3.14159265358979323846
|
||||
/*------------------------------------------------------------------------------------
|
||||
Global Variables
|
||||
-------------------------------------------------------------------------------------*/
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
TypeDef
|
||||
-------------------------------------------------------------------------------------*/
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Local Variables
|
||||
-------------------------------------------------------------------------------------*/
|
||||
//由于一个点是复数,因此用偶数脚标表示实部,奇数脚标表示虚部
|
||||
float fft_input[LEN] = {0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,
|
||||
8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,
|
||||
16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,
|
||||
24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0};
|
||||
|
||||
float fft_output[LEN];
|
||||
float MAX[2]; //保存最后得出的结果
|
||||
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Function
|
||||
-------------------------------------------------------------------------------------*/
|
||||
//void main(void)
|
||||
//{
|
||||
// int i;
|
||||
// clock_t begin, end;
|
||||
//
|
||||
// begin = clock();
|
||||
// ReverseArrange(); //倒序
|
||||
// Redix2FFT(); //FFT变换
|
||||
// end = clock();
|
||||
// printf("%lfs\n",(double)(end-begin)/CLOCKS_PER_SEC);
|
||||
|
||||
//}
|
||||
/*倒序函数,将fft_input进行逆向排序
|
||||
* 0 1 2 3 4 5 6 7
|
||||
倒序前脚标: 0-1 2-3 4-5 6-7 8-9 10-11 12-13 14-15
|
||||
0 4 2 6 1 5 3 7
|
||||
倒序后脚标: 0-1 8-9 4-5 12-13 2-3 10-11 6-7 14-15
|
||||
*/
|
||||
//其中:2^PWE=NFFT,PWE表示次幂,即脚标由几位二进制组成
|
||||
int ReverseArrange(void)
|
||||
{
|
||||
int8_t i,j;
|
||||
int8_t tmp = 0x00; //用来表示脚标
|
||||
//先给第一个复数赋值
|
||||
fft_output[0] = fft_input[0];
|
||||
fft_output[1] = fft_input[1];
|
||||
//对剩下的数进行倒序
|
||||
for(i=0;i<(FFTN-1)*2;i+=2){
|
||||
j = PWE-1; //得出需要左移的位数
|
||||
//逆向二进制加法
|
||||
while((tmp & (1<<j)) != 0){
|
||||
tmp &= ~(1<<j); //把第j位置零
|
||||
j--;
|
||||
}
|
||||
tmp |= (1<<j); //这里最后得出的是:0 4 2 6 1 5 3 7
|
||||
fft_output[i+2] = fft_input[tmp*2]; //按照新的顺序给输出赋值
|
||||
fft_output[i+3] = fft_input[tmp*2+1];
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*基2fft运算,需先将fft_input倒序输入到fft_out中*/
|
||||
int Redix2FFT(void)
|
||||
{
|
||||
int8_t layer; //表示FFT的层数
|
||||
int8_t pmul; //= 2^(PWE - layer),表示当前层中需要进行几次小FFT,FFTN/pmul表示当前小FFT的点数
|
||||
int8_t i; //表示正在进行第几次小FFT
|
||||
int8_t j; //= 2^(layer - 1),表示当前层小FFT中蝶形运算的次数
|
||||
int8_t k; //每次小FFT中,正在进行第几次蝶形运算
|
||||
int8_t currentBase; //表示当前层的小FFT中,第一个元素的脚标
|
||||
int8_t current; //=currentBase + k,表示当前需要进行蝶形运算的元素的脚标
|
||||
int8_t another; //=current + j,表示当前需要进行蝶形运算的元素的脚标
|
||||
int8_t m;
|
||||
float Re,Im; //实部、虚部的暂存区
|
||||
float TPOA; //=2 * pi / FFTN,FFT旋转因子WNK的w值
|
||||
float TPOATP;//=TPOA * pmul,表示小FFT中WNK的w值
|
||||
float reFactor,imFactor; //=cos(TPOATP * k),=-sin(TPOATP * k),表示WNK的实部和虚部
|
||||
|
||||
//下面的注释假设FFTN=8
|
||||
|
||||
TPOA = 2 * M_PI / FFTN; //TPOA = PI/4
|
||||
for(layer=1;layer<=PWE;layer++){ //layer = 1,2,3
|
||||
j = 0x01<<(layer-1); //使用math中的pow()会出现bug,使用左移运算减轻计算量
|
||||
pmul = 0x01<<(PWE - layer);
|
||||
for(i=0;i<pmul;i++){ //pmul=4时,i = 0,1,2,3
|
||||
currentBase = i * 4 *j; //j = 1时,currentBase = 0,4,8,12
|
||||
TPOATP = TPOA * pmul; //pmul=4时,TPOATP = PI
|
||||
for(k=0;k<j;k++){ //j=1时,k=0
|
||||
current = currentBase + k*2; //current = 0,4,8,12;
|
||||
another = current + j*2; //another = 2,6,10,14;
|
||||
//准备WNK
|
||||
reFactor = cos(TPOATP * k); //1
|
||||
imFactor = -sin(TPOATP * k);//0
|
||||
//乘上WNK
|
||||
Re = fft_output[another]; //备份实部
|
||||
fft_output[another] = fft_output[another] * reFactor
|
||||
- fft_output[another+1] * imFactor; //fft_output[2] = 8
|
||||
fft_output[another+1] = fft_output[another+1] * reFactor
|
||||
+ Re * imFactor; //fft_output[3] = 0
|
||||
//蝶形加法
|
||||
Re = fft_output[current]; //Re=0
|
||||
Im = fft_output[current+1]; //Im=0
|
||||
fft_output[current] += fft_output[another]; //fft_output[0] = 8;
|
||||
fft_output[current+1] += fft_output[another+1]; //fft_output[1] = 0
|
||||
|
||||
fft_output[another] = Re - fft_output[another]; //fft[2] = -8
|
||||
fft_output[another+1] = Im - fft_output[another+1]; //fft[3] = 0
|
||||
}
|
||||
}
|
||||
}
|
||||
for(m = 0; m < LEN; m += 2) {
|
||||
// printf("[%d]: %f+%fi\n", m/2, fft_output[m], fft_output[m+1]);
|
||||
}
|
||||
}
|
||||
/* 输出整合,计算出每个频率的幅值,取出幅值最大的点
|
||||
*/
|
||||
void IntegrateData(void)
|
||||
{
|
||||
//计算复数的模,注意,所有的模都存到偶数项中
|
||||
//fft_output[0] = sqrt(fft_output[0]*fft_output[0]+fft_output[1]*fft_output[1])/FFTN;
|
||||
fft_output[LEN-2] = sqrt(fft_output[LEN-2]*fft_output[LEN-2]+fft_output[LEN-1]*fft_output[LEN-1])/FFTN;
|
||||
for(uint8_t i=2;i<(LEN-2);i+=2){ //最后一个点和第一个点已单独处理
|
||||
fft_output[i] = 2*sqrt(fft_output[i]*fft_output[i]+fft_output[i+1]*fft_output[i+1])/FFTN;
|
||||
}
|
||||
//找出其中模长最大的值,记录脚标和模长
|
||||
MAX[0] = 2; //脚标
|
||||
MAX[1] = fft_output[2]; //模长
|
||||
for(uint8_t i=4;i<LEN;i+=2){
|
||||
if(MAX[1]<fft_output[i]){ //替换
|
||||
MAX[0] = i;
|
||||
MAX[1] = fft_output[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,21 @@
|
||||
#ifndef _FFT_H_
|
||||
#define _FFT_H_
|
||||
|
||||
|
||||
/*-----------------------------------------------------------------------------------
|
||||
INCLUDE HEADE FILES
|
||||
------------------------------------------------------------------------------------*/
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Macros
|
||||
-------------------------------------------------------------------------------------*/
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
TypeDef
|
||||
-------------------------------------------------------------------------------------*/
|
||||
|
||||
int ReverseArrange(void);
|
||||
int Redix2FFT(void);
|
||||
void IntegrateData(void);
|
||||
#endif
|
||||
@@ -0,0 +1,261 @@
|
||||
/*!
|
||||
* \file gpio.c
|
||||
*
|
||||
* \brief Target gpio implementation
|
||||
*
|
||||
* \copyright Revised BSD License, see section \ref LICENSE.
|
||||
*
|
||||
* \code
|
||||
*
|
||||
* _ __ _ ________ _
|
||||
* | |/ /(_)___ / ____/ /_ (_)___
|
||||
* | // / __ \/ / / __ \/ / __ \
|
||||
* / |/ / / / / /___/ / / / / /_/ /
|
||||
* /_/|_/_/_/ /_/\____/_/ /_/_/ .___/
|
||||
* /_/
|
||||
* (C) 2022-2025 XinChip
|
||||
*
|
||||
* \endcode
|
||||
*
|
||||
* \author ( XinChip ) Alex-J
|
||||
*
|
||||
* \author ( XinChip )
|
||||
*/
|
||||
|
||||
/*-----------------------------------------------------------------------------------
|
||||
INCLUDE HEADE FILES
|
||||
------------------------------------------------------------------------------------*/
|
||||
#include "gpio.h"
|
||||
#include "xc_drv_gpio.h"
|
||||
#include "nec_infrared.h"
|
||||
#include "dbg.h"
|
||||
#include "key.h"
|
||||
/*------------------------------------------------------------------------------------
|
||||
Global Variables
|
||||
-------------------------------------------------------------------------------------*/
|
||||
//uint8_t gpio_intr_flag = false;
|
||||
//uint64_t intr_val = 0;
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Func Prototype
|
||||
-------------------------------------------------------------------------------------*/
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Functions
|
||||
-------------------------------------------------------------------------------------*/
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief gpio_demo
|
||||
* @details
|
||||
* @param void
|
||||
* @retval void
|
||||
*/
|
||||
void gpio_demo(void)
|
||||
{
|
||||
// DEBUG("__GPIO_DEMO__\r");
|
||||
|
||||
// GPIO_InitCfg_t GPIO_InitCfg = { 0 };
|
||||
|
||||
// GPIO_InitCfg.Mux = GPIO_Mux0;
|
||||
// GPIO_InitCfg.FunSel = GPIO_Dx;
|
||||
// GPIO_InitCfg.Pull = GPIO_PULLUP;
|
||||
|
||||
// // Board KEY_MODE Initialization
|
||||
// GPIO_InitCfg.Dir = GPIO_DIR_INPUT;
|
||||
// GPIO_InitCfg.Int = NOT_INT;
|
||||
// GPIO_InitCfg.Pin = KEY_MODE;
|
||||
// xc_gpio_init(&GPIO_InitCfg);
|
||||
// // Board KEY_UP Initialization
|
||||
// GPIO_InitCfg.Pin = KEY_UP;
|
||||
// xc_gpio_init(&GPIO_InitCfg);
|
||||
// // Board KEY_DOWN Initialization
|
||||
// GPIO_InitCfg.Pin = KEY_DOWN;
|
||||
// xc_gpio_init(&GPIO_InitCfg);
|
||||
// // Gpio NVIC Enable
|
||||
// NVIC_EnableIRQ(GPIO_IRQn);
|
||||
}
|
||||
|
||||
void feedback(void)
|
||||
{
|
||||
//LOGI("LED3_PIN:%d",xc_gpio_read_pin(LED3_PIN));
|
||||
}
|
||||
|
||||
|
||||
///**
|
||||
// * @brief gpio_intr_callback
|
||||
// * @details Gpio interrupt callback function
|
||||
// * @param void
|
||||
// * @retval void
|
||||
// */
|
||||
//__RAM_CODE void gpio_intr_callback(uint64_t intr_sta)
|
||||
//{
|
||||
// intr_val = intr_sta;
|
||||
// gpio_intr_flag = true;
|
||||
// // Determine the interrupt of IRINPUT_PIN
|
||||
// if((intr_sta & (1 << IR_PIN)) != 0)
|
||||
// {
|
||||
// ir_callback();
|
||||
// }
|
||||
//}
|
||||
|
||||
|
||||
//void gpio_pulldown_input_test(void)
|
||||
//{
|
||||
// //input test
|
||||
// GPIO_InitCfg_t GPIO_InitCfg = { 0 };
|
||||
// GPIO_InitCfg.Mux = GPIO_Mux0;
|
||||
// GPIO_InitCfg.FunSel = GPIO_Dx;
|
||||
// GPIO_InitCfg.Dir = GPIO_DIR_INPUT;
|
||||
// GPIO_InitCfg.Int = NOT_INT;
|
||||
// GPIO_InitCfg.Pull = GPIO_PULLDOWN;
|
||||
// for(uint8_t i = 0;i < 8; i++)
|
||||
// {
|
||||
// GPIO_InitCfg.Pin = i;
|
||||
// xc_gpio_init(&GPIO_InitCfg);
|
||||
// }
|
||||
// while(1)
|
||||
// {
|
||||
// for(uint8_t i = 0;i < 8; i++)
|
||||
// {
|
||||
// DEBUG("gaio [%d] Val: %d\r\n", i,xc_gpio_read_pin(i));
|
||||
// for(int i=0;i<0x45500;i++);
|
||||
// }
|
||||
//
|
||||
// }
|
||||
//}
|
||||
|
||||
//void gpio_pullup_input_test(void)
|
||||
//{
|
||||
// //input test
|
||||
// GPIO_InitCfg_t GPIO_InitCfg = { 0 };
|
||||
// GPIO_InitCfg.Mux = GPIO_Mux0;
|
||||
// GPIO_InitCfg.FunSel = GPIO_Dx;
|
||||
// GPIO_InitCfg.Dir = GPIO_DIR_INPUT;
|
||||
// GPIO_InitCfg.Int = NOT_INT;
|
||||
// GPIO_InitCfg.Pull = GPIO_PULLUP;
|
||||
// for(uint8_t i = 0;i < 8; i++)
|
||||
// {
|
||||
// GPIO_InitCfg.Pin = i;
|
||||
// xc_gpio_init(&GPIO_InitCfg);
|
||||
// }
|
||||
// while(1)
|
||||
// {
|
||||
// for(uint8_t i = 0;i < 8; i++)
|
||||
// {
|
||||
// DEBUG("gaio [%d] Val: %d\r\n", i,xc_gpio_read_pin(i));
|
||||
// for(int i=0;i<0x45500;i++);
|
||||
// }
|
||||
//
|
||||
// }
|
||||
//}
|
||||
|
||||
//void gpio_nopull_input_test(void)
|
||||
//{
|
||||
// //input test
|
||||
// GPIO_InitCfg_t GPIO_InitCfg = { 0 };
|
||||
// GPIO_InitCfg.Mux = GPIO_Mux0;
|
||||
// GPIO_InitCfg.FunSel = GPIO_Dx;
|
||||
// GPIO_InitCfg.Dir = GPIO_DIR_INPUT;
|
||||
// GPIO_InitCfg.Int = NOT_INT;
|
||||
// GPIO_InitCfg.Pull = GPIO_NOPULL;
|
||||
// for(uint8_t i = 0;i < 8; i++)
|
||||
// {
|
||||
// GPIO_InitCfg.Pin = i;
|
||||
// xc_gpio_init(&GPIO_InitCfg);
|
||||
// }
|
||||
// while(1)
|
||||
// {
|
||||
// for(uint8_t i = 0;i < 8; i++)
|
||||
// {
|
||||
// DEBUG("gaio [%d] Val: %d\r\n", i,xc_gpio_read_pin(i));
|
||||
// for(int i=0;i<0x45500;i++);
|
||||
// }
|
||||
//
|
||||
// }
|
||||
//}
|
||||
|
||||
//void gpio_pulldown_input_inter_test(void)
|
||||
//{
|
||||
// //input test
|
||||
// GPIO_InitCfg_t GPIO_InitCfg = { 0 };
|
||||
// GPIO_InitCfg.Mux = GPIO_Mux0;
|
||||
// GPIO_InitCfg.FunSel = GPIO_Dx;
|
||||
// GPIO_InitCfg.Dir = GPIO_DIR_INPUT;
|
||||
// GPIO_InitCfg.Int = RIS_EDGE_INT;
|
||||
// GPIO_InitCfg.Pull = GPIO_PULLDOWN;
|
||||
// for(uint8_t i = 0;i < 8; i++)
|
||||
// {
|
||||
// GPIO_InitCfg.Pin = i;
|
||||
// xc_gpio_init(&GPIO_InitCfg);
|
||||
// }
|
||||
// // Gpio NVIC Enable
|
||||
// NVIC_EnableIRQ(GPIO_IRQn);
|
||||
//
|
||||
// while(1)
|
||||
// {
|
||||
// if(gpio_intr_flag == true)
|
||||
// {
|
||||
// DEBUG("Intr Status Val: 0x%016llx\n", intr_val);
|
||||
// gpio_intr_flag = false;
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
|
||||
//void gpio_pullup_input_inter_test(void)
|
||||
//{
|
||||
// //input test
|
||||
// GPIO_InitCfg_t GPIO_InitCfg = { 0 };
|
||||
// GPIO_InitCfg.Mux = GPIO_Mux0;
|
||||
// GPIO_InitCfg.FunSel = GPIO_Dx;
|
||||
// GPIO_InitCfg.Dir = GPIO_DIR_INPUT;
|
||||
// GPIO_InitCfg.Int = FAIL_EDGE_INT;
|
||||
// GPIO_InitCfg.Pull = GPIO_PULLUP;
|
||||
// for(uint8_t i = 0;i < 8; i++)
|
||||
// {
|
||||
// GPIO_InitCfg.Pin = i;
|
||||
// xc_gpio_init(&GPIO_InitCfg);
|
||||
// }
|
||||
// // Gpio NVIC Enable
|
||||
// NVIC_EnableIRQ(GPIO_IRQn);
|
||||
//
|
||||
// while(1)
|
||||
// {
|
||||
// if(gpio_intr_flag == true)
|
||||
// {
|
||||
// DEBUG("Intr Status Val: 0x%016llx\n", intr_val);
|
||||
// gpio_intr_flag = false;
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
|
||||
//void gpio_output_test(void)
|
||||
//{
|
||||
// GPIO_InitCfg_t GPIO_InitCfg = { 0 };
|
||||
// GPIO_InitCfg.Mux = GPIO_Mux0;
|
||||
// GPIO_InitCfg.FunSel = GPIO_Dx;
|
||||
// GPIO_InitCfg.Pull = GPIO_PULLDOWN;
|
||||
// GPIO_InitCfg.Dir = GPIO_DIR_OUTPUT;
|
||||
// GPIO_InitCfg.Int = NOT_INT;
|
||||
// for(uint8_t i = 0;i < 8; i++)
|
||||
// {
|
||||
// GPIO_InitCfg.Pin = i;
|
||||
// xc_gpio_init(&GPIO_InitCfg);
|
||||
// xc_gpio_write_pin(i,GPIO_PIN_RESET);
|
||||
// }
|
||||
// for(int i=0;i<0x455000;i++);
|
||||
// for(uint8_t i = 0;i < 8; i++)
|
||||
// {
|
||||
// xc_gpio_write_pin(i,GPIO_PIN_SET);
|
||||
// }
|
||||
// for(int i=0;i<0x455000;i++);
|
||||
// for(uint8_t i = 0;i < 8; i++)
|
||||
// {
|
||||
// GPIO_InitCfg.Pin = i;
|
||||
// xc_gpio_init(&GPIO_InitCfg);
|
||||
// xc_gpio_write_pin(i,GPIO_PIN_RESET);
|
||||
// }
|
||||
//}
|
||||
|
||||
|
||||
@@ -0,0 +1,71 @@
|
||||
/*!
|
||||
* \file gpio.h
|
||||
*
|
||||
* \brief The head file of gpio.c
|
||||
*
|
||||
* \copyright Revised BSD License, see section \ref LICENSE.
|
||||
*
|
||||
* \code
|
||||
*
|
||||
* _ __ _ ________ _
|
||||
* | |/ /(_)___ / ____/ /_ (_)___
|
||||
* | // / __ \/ / / __ \/ / __ \
|
||||
* / |/ / / / / /___/ / / / / /_/ /
|
||||
* /_/|_/_/_/ /_/\____/_/ /_/_/ .___/
|
||||
* /_/
|
||||
* (C) 2022-2025 XinChip
|
||||
*
|
||||
* \endcode
|
||||
*
|
||||
* \author ( XinChip ) Alex-J
|
||||
*
|
||||
* \author ( XinChip )
|
||||
*/
|
||||
|
||||
/* Define to prevent recursive inclusion -------------------------------------*/
|
||||
#ifndef __GPIO_H__
|
||||
#define __GPIO_H__
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*-----------------------------------------------------------------------------------
|
||||
INCLUDE HEADE FILES
|
||||
------------------------------------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdint.h>
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Macros
|
||||
-------------------------------------------------------------------------------------*/
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Macros
|
||||
-------------------------------------------------------------------------------------*/
|
||||
//#define LED1_PIN GPIO_6
|
||||
//#define LED2_PIN GPIO_24
|
||||
|
||||
|
||||
//#define LED3_PIN GPIO_10
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
TypeDef
|
||||
-------------------------------------------------------------------------------------*/
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Global Variables
|
||||
-------------------------------------------------------------------------------------*/
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Exported Functions
|
||||
-------------------------------------------------------------------------------------*/
|
||||
void gpio_demo(void);
|
||||
void feedback(void);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __GPIO_H__ */
|
||||
|
||||
@@ -0,0 +1,224 @@
|
||||
/*!
|
||||
* \file key.c
|
||||
*
|
||||
* \brief Target key implementation
|
||||
*
|
||||
* \copyright Revised BSD License, see section \ref LICENSE.
|
||||
*
|
||||
* \code
|
||||
*
|
||||
* _ __ _ ________ _
|
||||
* | |/ /(_)___ / ____/ /_ (_)___
|
||||
* | // / __ \/ / / __ \/ / __ \
|
||||
* / |/ / / / / /___/ / / / / /_/ /
|
||||
* /_/|_/_/_/ /_/\____/_/ /_/_/ .___/
|
||||
* /_/
|
||||
* (C) 2022-2025 XinChip
|
||||
*
|
||||
* \endcode
|
||||
*
|
||||
* \author ( XinChip ) Alex-J
|
||||
*
|
||||
* \author ( XinChip )
|
||||
*/
|
||||
|
||||
/*-----------------------------------------------------------------------------------
|
||||
INCLUDE HEADE FILES
|
||||
------------------------------------------------------------------------------------*/
|
||||
#include "xc_drv_gpio.h"
|
||||
#include "xc60xx.h"
|
||||
#include "key.h"
|
||||
#include "message.h"
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Macros
|
||||
-------------------------------------------------------------------------------------*/
|
||||
#define IS_KEY_DOWN(n) (!(xc_gpio_read_pin(n)))
|
||||
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Global Variables
|
||||
-------------------------------------------------------------------------------------*/
|
||||
static uint16_t last_key_val = NO_KEY;
|
||||
static uint16_t key_down_count = 0;
|
||||
static uint16_t key_up_count = 0;
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Func Prototype
|
||||
-------------------------------------------------------------------------------------*/
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Functions
|
||||
-------------------------------------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
* @brief app_key_hold_detection
|
||||
* @details
|
||||
* @param curren_key_val
|
||||
* @retval key_num
|
||||
*/
|
||||
__RAM_CODE uint16_t app_key_hold_detection(uint16_t curren_key_val)
|
||||
{
|
||||
uint16_t key_num = NO_KEY;
|
||||
|
||||
if (key_down_count < 0xff)
|
||||
key_down_count++;
|
||||
|
||||
if (key_down_count == KEY_DOWN_TIMER)
|
||||
{
|
||||
key_num = (curren_key_val | KEY_SHORT_DOWN); // shor key
|
||||
}
|
||||
else if(key_down_count == KEY_LONG_TIMER)
|
||||
{
|
||||
key_num = (curren_key_val | KEY_LONG_DOWN); // loog key
|
||||
}
|
||||
key_up_count = 0;
|
||||
|
||||
return key_num;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief app_new_key_detection
|
||||
* @details key up or new key detection
|
||||
* @param curren_key_val
|
||||
* @retval key_num
|
||||
*/
|
||||
__RAM_CODE uint16_t app_new_key_detection(uint16_t curren_key_val)
|
||||
{
|
||||
uint16_t key_num = NO_KEY;
|
||||
|
||||
key_up_count++;
|
||||
if (key_up_count >= KEY_UP_TIMER)
|
||||
{
|
||||
if (key_down_count >= KEY_LONG_TIMER)
|
||||
{
|
||||
key_num = (last_key_val | KEY_LONG_UP); // long key up
|
||||
last_key_val = 0;
|
||||
}
|
||||
else if (key_down_count >= KEY_DOWN_TIMER && key_down_count < KEY_LONG_TIMER)
|
||||
{
|
||||
key_num = (last_key_val | KEY_SHORT_UP); // shor key up
|
||||
last_key_val = 0;
|
||||
}
|
||||
key_down_count = 0;
|
||||
key_up_count = 0;
|
||||
}
|
||||
if ((curren_key_val && curren_key_val != last_key_val))
|
||||
{
|
||||
if (key_down_count >= KEY_LONG_TIMER)
|
||||
{
|
||||
key_num = (last_key_val | KEY_LONG_UP); // long key up
|
||||
}
|
||||
else if (key_down_count >= KEY_DOWN_TIMER && key_down_count < KEY_LONG_TIMER)
|
||||
{
|
||||
key_num = (last_key_val | KEY_SHORT_UP); // shor key up
|
||||
}
|
||||
last_key_val = curren_key_val;
|
||||
key_down_count = 0;
|
||||
key_up_count = 0;
|
||||
}
|
||||
|
||||
return key_num;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief key_check_process
|
||||
* @details
|
||||
* @param curren_key_val
|
||||
* @retval key_num
|
||||
*/
|
||||
__RAM_CODE uint16_t key_check_process(uint16_t curren_key_val)
|
||||
{
|
||||
uint16_t key_num = NO_KEY;
|
||||
|
||||
if ( curren_key_val == last_key_val && last_key_val != NO_KEY )
|
||||
{
|
||||
key_num = app_key_hold_detection(curren_key_val);
|
||||
}
|
||||
else
|
||||
{
|
||||
key_num = app_new_key_detection(curren_key_val);
|
||||
}
|
||||
|
||||
return key_num;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief gpio_key_check
|
||||
* @details
|
||||
* @param void
|
||||
* @retval key_num
|
||||
*/
|
||||
uint16_t gpio_key_check(void)
|
||||
{
|
||||
uint16_t key_val = NO_KEY;
|
||||
|
||||
if ( IS_KEY_DOWN(KEY_MODE) )
|
||||
{
|
||||
key_val = REC_KEY;
|
||||
}
|
||||
else if( IS_KEY_DOWN(KEY_UP) )
|
||||
{
|
||||
key_val = REC_KEY_UP;
|
||||
}
|
||||
else if( IS_KEY_DOWN(KEY_DOWN) )
|
||||
{
|
||||
key_val = REC_KEY_DOWN;
|
||||
}
|
||||
|
||||
return key_val;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief key_check_process
|
||||
* @details key scan and send
|
||||
* @param void
|
||||
* @retval void
|
||||
*/
|
||||
void app_key_scan(void)
|
||||
{
|
||||
uint16_t key_num = NO_KEY;
|
||||
uint16_t key_val = NO_KEY;
|
||||
|
||||
key_val = gpio_key_check();
|
||||
key_num = key_check_process(key_val);
|
||||
|
||||
if (key_num != NO_KEY)
|
||||
{
|
||||
app_key_message_send( key_num );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief app_key_init
|
||||
* @details key init
|
||||
* @param void
|
||||
* @retval void
|
||||
*/
|
||||
void app_key_init(void)
|
||||
{
|
||||
GPIO_InitCfg_t GPIO_InitCfg = {0};
|
||||
|
||||
GPIO_InitCfg.Mux = GPIO_Mux0;
|
||||
GPIO_InitCfg.FunSel = GPIO_Dx;
|
||||
GPIO_InitCfg.Pull = GPIO_PULLUP;
|
||||
GPIO_InitCfg.Dir = GPIO_DIR_INPUT;
|
||||
GPIO_InitCfg.Int = NOT_INT;
|
||||
GPIO_InitCfg.Pin = KEY_MODE;
|
||||
xc_gpio_init(&GPIO_InitCfg);
|
||||
|
||||
GPIO_InitCfg.Pin = KEY_UP;
|
||||
xc_gpio_init(&GPIO_InitCfg);
|
||||
|
||||
GPIO_InitCfg.Pin = KEY_DOWN;
|
||||
xc_gpio_init(&GPIO_InitCfg);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,101 @@
|
||||
/*!
|
||||
* \file key.h
|
||||
*
|
||||
* \brief The head file of key.c
|
||||
*
|
||||
* \copyright Revised BSD License, see section \ref LICENSE.
|
||||
*
|
||||
* \code
|
||||
*
|
||||
* _ __ _ ________ _
|
||||
* | |/ /(_)___ / ____/ /_ (_)___
|
||||
* | // / __ \/ / / __ \/ / __ \
|
||||
* / |/ / / / / /___/ / / / / /_/ /
|
||||
* /_/|_/_/_/ /_/\____/_/ /_/_/ .___/
|
||||
* /_/
|
||||
* (C) 2022-2025 XinChip
|
||||
*
|
||||
* \endcode
|
||||
*
|
||||
* \author ( XinChip ) Alex-J
|
||||
*
|
||||
* \author ( XinChip )
|
||||
*/
|
||||
|
||||
/* Define to prevent recursive inclusion -------------------------------------*/
|
||||
#ifndef __KEY_H__
|
||||
#define __KEY_H__
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
/*-----------------------------------------------------------------------------------
|
||||
INCLUDE HEADE FILES
|
||||
------------------------------------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdint.h>
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Macros
|
||||
-------------------------------------------------------------------------------------*/
|
||||
#define KEY_MODE GPIO_18
|
||||
#define KEY_UP GPIO_19
|
||||
#define KEY_DOWN GPIO_5
|
||||
|
||||
#define KEY_DOWN_TIMER 10
|
||||
#define KEY_LONG_TIMER 20
|
||||
#define KEY_LOH_TIMER 20
|
||||
#define KEY_UP_TIMER 10
|
||||
|
||||
// KEY NUM 0- 255
|
||||
#define KEY_NUM1 0X0001
|
||||
#define KEY_NUM2 0X0002
|
||||
#define KEY_NUM3 0X0004
|
||||
|
||||
#define KEY_SHORT_DOWN 0X0000
|
||||
#define KEY_SHORT_UP 0X0100
|
||||
#define KEY_LONG_DOWN 0X0200
|
||||
#define KEY_LONG_UP 0X0400
|
||||
|
||||
#define NO_KEY 0
|
||||
|
||||
#define REC_KEY KEY_NUM1
|
||||
#define REC_KEY_UP KEY_NUM2
|
||||
#define REC_KEY_DOWN KEY_NUM3
|
||||
|
||||
#define REC_KEY_SHORT_DOWN (REC_KEY | KEY_SHORT_DOWN)
|
||||
#define REC_KEY_SHORT_UP (REC_KEY | KEY_SHORT_UP)
|
||||
#define REC_KEY_LONG_DOWN (REC_KEY | KEY_LONG_DOWN)
|
||||
#define REC_KEY_LONG_UP (REC_KEY | KEY_LONG_UP)
|
||||
|
||||
#define REC_KEY_UP_SHORT_DOWN (REC_KEY_UP | KEY_SHORT_DOWN)
|
||||
#define REC_KEY_UP_SHORT_UP (REC_KEY_UP | KEY_SHORT_UP)
|
||||
#define REC_KEY_UP_LONG_DOWN (REC_KEY_UP | KEY_LONG_DOWN)
|
||||
#define REC_KEY_UP_LONG_UP (REC_KEY_UP | KEY_LONG_UP)
|
||||
|
||||
#define REC_KEY_DOWN_SHORT_DOWN (REC_KEY_DOWN | KEY_SHORT_DOWN)
|
||||
#define REC_KEY_DOWN_SHORT_UP (REC_KEY_DOWN | KEY_SHORT_UP)
|
||||
#define REC_KEY_DOWN_LONG_DOWN (REC_KEY_DOWN | KEY_LONG_DOWN)
|
||||
#define REC_KEY_DOWN_LONG_UP (REC_KEY_DOWN | KEY_LONG_UP)
|
||||
/*------------------------------------------------------------------------------------
|
||||
TypeDef
|
||||
-------------------------------------------------------------------------------------*/
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Global Variables
|
||||
-------------------------------------------------------------------------------------*/
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Exported Functions
|
||||
-------------------------------------------------------------------------------------*/
|
||||
void app_key_init(void);
|
||||
void app_key_scan(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __KEY_H__ */
|
||||
@@ -0,0 +1,123 @@
|
||||
/*!
|
||||
* \file key.c
|
||||
*
|
||||
* \brief Target key implementation
|
||||
*
|
||||
* \copyright Revised BSD License, see section \ref LICENSE.
|
||||
*
|
||||
* \code
|
||||
*
|
||||
* _ __ _ ________ _
|
||||
* | |/ /(_)___ / ____/ /_ (_)___
|
||||
* | // / __ \/ / / __ \/ / __ \
|
||||
* / |/ / / / / /___/ / / / / /_/ /
|
||||
* /_/|_/_/_/ /_/\____/_/ /_/_/ .___/
|
||||
* /_/
|
||||
* (C) 2022-2025 XinChip
|
||||
*
|
||||
* \endcode
|
||||
*
|
||||
* \author ( XinChip ) Alex-J
|
||||
*
|
||||
* \author ( XinChip )
|
||||
*/
|
||||
|
||||
/*-----------------------------------------------------------------------------------
|
||||
INCLUDE HEADE FILES
|
||||
------------------------------------------------------------------------------------*/
|
||||
#include "message.h"
|
||||
#include "xc6xxx.h"
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Macros
|
||||
-------------------------------------------------------------------------------------*/
|
||||
#define MESSAGE_MAX 40
|
||||
|
||||
|
||||
#define MSG_ADD_MAX(msg) (msg >= MESSAGE_MAX) ? (MESSAGE_MAX) : (msg+1)
|
||||
#define MSG_REDUCE_MIN(msg) (msg) ? (msg - 1) : 0
|
||||
#define MSG_LOOP_MAX_MIN(msg) (msg >= MESSAGE_MAX) ? (0) : (msg)
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Global Variables
|
||||
-------------------------------------------------------------------------------------*/
|
||||
uint16_t message_buff[MESSAGE_MAX] = {0};
|
||||
volatile uint16_t message_in_count = 0;
|
||||
volatile uint16_t message_out_index = 0;
|
||||
/*------------------------------------------------------------------------------------
|
||||
Func Prototype
|
||||
-------------------------------------------------------------------------------------*/
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Functions
|
||||
-------------------------------------------------------------------------------------*/
|
||||
/**
|
||||
* @brief app_key_message_send
|
||||
* @details key msg send
|
||||
* @param void
|
||||
* @retval void
|
||||
*/
|
||||
void app_key_message_send(uint16_t msg)
|
||||
{
|
||||
if (message_in_count >= MESSAGE_MAX )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
for(uint8_t i = 0; i < MESSAGE_MAX ; i++)
|
||||
{
|
||||
if (message_buff[i] == 0)
|
||||
{
|
||||
message_buff[i] = msg;
|
||||
message_in_count++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief app_key_message_get
|
||||
* @details get key msg
|
||||
* @param void
|
||||
* @retval void
|
||||
*/
|
||||
uint16_t app_key_message_get(void)
|
||||
{
|
||||
uint16_t msg = 0;
|
||||
|
||||
if (!message_in_count)
|
||||
{
|
||||
message_out_index = 0;
|
||||
return msg;
|
||||
}
|
||||
|
||||
for(uint8_t i = 0; i < MESSAGE_MAX ; i++)
|
||||
{
|
||||
if (message_buff[message_out_index])
|
||||
{
|
||||
msg = message_buff[message_out_index];
|
||||
message_buff[message_out_index] = 0;
|
||||
message_out_index = MSG_ADD_MAX(message_out_index);
|
||||
message_out_index = MSG_LOOP_MAX_MIN(message_out_index);
|
||||
message_in_count = MSG_REDUCE_MIN(message_in_count);
|
||||
break;
|
||||
}
|
||||
message_out_index = MSG_ADD_MAX(message_out_index);
|
||||
message_out_index = MSG_LOOP_MAX_MIN(message_out_index);
|
||||
}
|
||||
|
||||
return msg;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief app_key_message_clr
|
||||
* @details clear key msg
|
||||
* @param void
|
||||
* @retval void
|
||||
*/
|
||||
void app_key_message_clr(void)
|
||||
{
|
||||
memset(message_buff,0x00,MESSAGE_MAX);
|
||||
message_in_count = 0;
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
/*!
|
||||
* \file key_message.h
|
||||
*
|
||||
* \brief The head file of key_message.c
|
||||
*
|
||||
* \copyright Revised BSD License, see section \ref LICENSE.
|
||||
*
|
||||
* \code
|
||||
*
|
||||
* _ __ _ ________ _
|
||||
* | |/ /(_)___ / ____/ /_ (_)___
|
||||
* | // / __ \/ / / __ \/ / __ \
|
||||
* / |/ / / / / /___/ / / / / /_/ /
|
||||
* /_/|_/_/_/ /_/\____/_/ /_/_/ .___/
|
||||
* /_/
|
||||
* (C) 2022-2025 XinChip
|
||||
*
|
||||
* \endcode
|
||||
*
|
||||
* \author ( XinChip )
|
||||
*
|
||||
* \author ( XinChip )
|
||||
*/
|
||||
|
||||
/* Define to prevent recursive inclusion -------------------------------------*/
|
||||
#ifndef __KEY_MESSAGE_H__
|
||||
#define __KEY_MESSAGE_H__
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
/*-----------------------------------------------------------------------------------
|
||||
INCLUDE HEADE FILES
|
||||
------------------------------------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdint.h>
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Macros
|
||||
-------------------------------------------------------------------------------------*/
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
TypeDef
|
||||
-------------------------------------------------------------------------------------*/
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Global Variables
|
||||
-------------------------------------------------------------------------------------*/
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Exported Functions
|
||||
-------------------------------------------------------------------------------------*/
|
||||
void app_key_message_send(uint16_t msg);
|
||||
uint16_t app_key_message_get(void);
|
||||
void app_key_message_clr(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __KEY_MESSAGE_H__ */
|
||||
@@ -0,0 +1,207 @@
|
||||
/*!
|
||||
* \file nec_infrared.c
|
||||
*
|
||||
*/
|
||||
|
||||
/*-----------------------------------------------------------------------------------
|
||||
INCLUDE HEADE FILES
|
||||
------------------------------------------------------------------------------------*/
|
||||
#include "xc6xxx.h"
|
||||
#include "gpio.h"
|
||||
#include "nec_infrared.h"
|
||||
#include "xc_drv_gpio.h"
|
||||
/*------------------------------------------------------------------------------------
|
||||
Macros
|
||||
-------------------------------------------------------------------------------------*/
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Global Variables
|
||||
-------------------------------------------------------------------------------------*/
|
||||
IR_struct IR = {0};
|
||||
//uint8_t gpio_intr_flag = false;
|
||||
uint64_t intr_val = 0;
|
||||
|
||||
extern uint8_t only_read_charactertics_buffer[];
|
||||
/*------------------------------------------------------------------------------------
|
||||
Func Prototype
|
||||
-------------------------------------------------------------------------------------*/
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Functions
|
||||
-------------------------------------------------------------------------------------*/
|
||||
/**
|
||||
* @brief gpio_demo
|
||||
* @details
|
||||
* @param void
|
||||
* @retval void
|
||||
*/
|
||||
void app_ir_init(void)
|
||||
{
|
||||
// Board IrInput Initialization
|
||||
GPIO_InitCfg_t GPIO_InitCfg = { 0 };
|
||||
|
||||
GPIO_InitCfg.Mux = GPIO_Mux0;
|
||||
GPIO_InitCfg.FunSel = GPIO_Dx;
|
||||
GPIO_InitCfg.Pull = GPIO_PULLUP;
|
||||
GPIO_InitCfg.Dir = GPIO_DIR_INPUT;
|
||||
GPIO_InitCfg.Int = RIS_FAIL_EDGE_INT;
|
||||
GPIO_InitCfg.Pin = IR_PIN;
|
||||
xc_gpio_init(&GPIO_InitCfg);
|
||||
// Gpio NVIC Enable
|
||||
NVIC_EnableIRQ(GPIO_IRQn);
|
||||
}
|
||||
/**
|
||||
* @brief gpio_intr_callback
|
||||
* @details Gpio interrupt callback function
|
||||
* @param void
|
||||
* @retval void
|
||||
*/
|
||||
__RAM_CODE void gpio_intr_callback(uint64_t intr_sta)
|
||||
{
|
||||
intr_val = intr_sta;
|
||||
if ((intr_sta & (1 << IR_PIN)) != 0)
|
||||
{
|
||||
ir_callback();
|
||||
}
|
||||
}
|
||||
/**
|
||||
* @brief This function handles EXIT Interrupt .
|
||||
*/
|
||||
void ir_callback(void)
|
||||
{
|
||||
uint32_t us = 20000;
|
||||
IR.timer_count = 640 - timer_tcv_get(TIMER2_IDX); //每次进外部中断,先保存当前的计数值 CNT加1的时间为31.25us
|
||||
|
||||
static uint8_t acunt = 0;
|
||||
acunt++;
|
||||
if (acunt == 255)
|
||||
acunt = 0;
|
||||
|
||||
xc_timer_stop(TIMER2_IDX);
|
||||
|
||||
if (xc_gpio_read_pin(IR_PIN) == 1) //检查PA5电平 上升沿 IR.timer_count的值为上一个下降沿到这次的上升沿,中间的间隔时间(即低电平时间)
|
||||
{
|
||||
if (IR.IR_event == 0 && IR.f_head == 0) //既没有开始接受01数据,也没有开始接受头码,那么进入接收头码判断
|
||||
{
|
||||
if (IR.timer_count > 280 && IR.timer_count < 296) //头码为9ms的低电平,允许误差100us
|
||||
{
|
||||
IR.f_head = 1; //如果符合,开始判定头码
|
||||
|
||||
}
|
||||
else if (IR.timer_count > 296) //如果头码已经大于9.1ms 认为是错误
|
||||
{
|
||||
IR.f_head = 0;
|
||||
IR.IR_decode_bit = 0; //电平计数超过了码元长度 清除位数计数
|
||||
IR.IR_code = 0;
|
||||
IR.IR_event = 0;
|
||||
|
||||
IR.IR_code_get = 0;
|
||||
IR.low_8bit = 0;
|
||||
IR.hig_8bit = 0;
|
||||
IR.rece_ok = 0;
|
||||
}
|
||||
}
|
||||
else if (IR.IR_event == 1) //如果头码判定正确,开始接受01数据
|
||||
{
|
||||
if (IR.timer_count > 12 && IR.timer_count < 25) //所有的01数据,开头都是0.56ms的低电平
|
||||
{
|
||||
IR.get_bit = 1; //如果符合,那么开始根据后面的高电平时间来判定此次为0还是1
|
||||
}
|
||||
else //否则清除所有数据
|
||||
{
|
||||
IR.f_head = 0;
|
||||
IR.IR_decode_bit = 0; //电平计数超过了码元长度 清除位数计数
|
||||
IR.IR_code = 0;
|
||||
IR.IR_event = 0;
|
||||
|
||||
IR.IR_code_get = 0;
|
||||
IR.low_8bit = 0;
|
||||
IR.hig_8bit = 0;
|
||||
IR.rece_ok = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
else //上一个上升沿到这次的下降沿,之间的时间间隔(即高电平时间)
|
||||
{
|
||||
if (IR.f_head == 1) //如果9ms的低电平成立了,开始判断是否有4.5ms的高电平时间
|
||||
{
|
||||
if (IR.timer_count > 135 && IR.timer_count < 153)
|
||||
{
|
||||
IR.IR_event = 1; //4.5ms成立,认为此次的头码成立,开始接收01数据
|
||||
}
|
||||
else
|
||||
{
|
||||
IR.IR_decode_bit = 0; //电平计数超过了码元长度 清除位数计数
|
||||
IR.IR_code = 0;
|
||||
IR.IR_event = 0;
|
||||
|
||||
IR.IR_code_get = 0;
|
||||
IR.low_8bit = 0;
|
||||
IR.hig_8bit = 0;
|
||||
IR.rece_ok = 0;
|
||||
}
|
||||
IR.f_head = 0; //清除接受头码标志
|
||||
}
|
||||
if (IR.IR_event == 1) //接收数据内容成立
|
||||
{
|
||||
if (IR.get_bit == 1) //如果0.56ms的低电平已经成立,那么开始判断这次的高电平时间
|
||||
{
|
||||
if (IR.timer_count > 12 && IR.timer_count < 25) //0.56ms低+0.56ms高,说明传输的数据为 0
|
||||
{
|
||||
IR.IR_code <<= 1;
|
||||
IR.IR_decode_bit ++;
|
||||
}
|
||||
else if (IR.timer_count > 43 && IR.timer_count < 63) //0.56ms低+1.68ms高,说明传输的数据为 1
|
||||
{
|
||||
IR.IR_code <<= 1;
|
||||
IR.IR_code ++; //数据位置1
|
||||
IR.IR_decode_bit ++;
|
||||
}
|
||||
else //如果0.56ms的低电平后接着的是不符合要求的高电平时间,那么清零所有数据
|
||||
{
|
||||
IR.f_head = 0;
|
||||
IR.IR_decode_bit = 0; //电平计数超过了码元长度 清除位数计数
|
||||
IR.IR_event = 0;
|
||||
IR.IR_code = 0;
|
||||
|
||||
IR.IR_code_get = 0;
|
||||
IR.low_8bit = 0;
|
||||
IR.hig_8bit = 0;
|
||||
IR.rece_ok = 0;
|
||||
}
|
||||
|
||||
if (IR.IR_decode_bit == 32) //接收了32位数据之后,开始判断内容
|
||||
{
|
||||
IR.IR_code_get = IR.IR_code;
|
||||
|
||||
IR.user_code = (uint16_t)(IR.IR_code_get >> 16); //获取遥控用户码
|
||||
|
||||
IR.IR_code_get = IR.IR_code;
|
||||
IR.low_8bit = IR.IR_code_get & 0x000000FF; //对于本项目而言之后低16位数据有用,其中15-8为数据,7-0为数据反码
|
||||
IR.hig_8bit = (IR.IR_code_get & 0x0000FF00) >> 8;
|
||||
IR.low_8bit ^= 0xFF; //拿反码异或1 得到取反数据
|
||||
|
||||
if (IR.low_8bit == IR.hig_8bit) //判定数据跟数据反码是否相符,如果相符则为有用数据,否则舍弃所有数据
|
||||
{
|
||||
IR.rece_ok = 1;
|
||||
only_read_charactertics_buffer[5] = IR.hig_8bit;
|
||||
}
|
||||
else
|
||||
{
|
||||
IR.rece_ok = 0;
|
||||
IR.low_8bit = 0;
|
||||
IR.hig_8bit = 0;
|
||||
IR.IR_code_get = 0;
|
||||
}
|
||||
IR.IR_decode_bit = 0;
|
||||
IR.IR_code = 0;
|
||||
IR.f_head = 0;
|
||||
IR.IR_event = 0;
|
||||
}
|
||||
IR.get_bit = 0; //每次处理完一位数据之后,清楚标志位,待下次0.56ms低电平成立之后再次判断
|
||||
}
|
||||
}
|
||||
}
|
||||
xc_timer_set_value(TIMER2_IDX, us); //设置定时器初值,自减
|
||||
xc_timer_start(TIMER2_IDX); //每次进入外部中断都要启动计数器
|
||||
}
|
||||
@@ -0,0 +1,84 @@
|
||||
|
||||
/* Define to prevent recursive inclusion -------------------------------------*/
|
||||
#ifndef __NEC_INFRARED_H__
|
||||
#define __NEC_INFRARED_H__
|
||||
|
||||
/*-----------------------------------------------------------------------------------
|
||||
INCLUDE HEADE FILES
|
||||
------------------------------------------------------------------------------------*/
|
||||
#include <stdint.h>
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Macros
|
||||
-------------------------------------------------------------------------------------*/
|
||||
#define IR_PIN GPIO_2
|
||||
/*------------------------------------------------------------------------------------
|
||||
TypeDef
|
||||
-------------------------------------------------------------------------------------*/
|
||||
typedef struct IR_decode
|
||||
{
|
||||
uint32_t timer_count; //定时器数据
|
||||
uint32_t IR_code; //读取到的红外码
|
||||
uint32_t IR_code_get;
|
||||
uint32_t IR_decode_bit;//解码接收位数
|
||||
uint32_t IR_event; //红外输出事件
|
||||
uint16_t user_code;//用户码
|
||||
uint8_t data_recving_flag;//红外接收中的标志
|
||||
uint8_t f_head;
|
||||
uint8_t get_bit;
|
||||
uint8_t low_8bit;
|
||||
uint8_t hig_8bit;
|
||||
uint8_t rece_ok;
|
||||
|
||||
uint8_t printf_datalen;
|
||||
|
||||
}IR_struct;
|
||||
/*------------------------------------------------------------------------------------
|
||||
Global Variables
|
||||
-------------------------------------------------------------------------------------*/
|
||||
extern IR_struct IR;
|
||||
/*------------------------------------------------------------------------------------
|
||||
Exported Functions
|
||||
-------------------------------------------------------------------------------------*/
|
||||
void ir_callback(void);
|
||||
void app_ir_init(void);
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
///* Private defines -----------------------------------------------------------*/
|
||||
|
||||
//#define IR_CODE_GET_POWER (uint8_t)(0xE2)
|
||||
//#define IR_CODE_GET_SPEED (uint8_t)(0xA2)
|
||||
//#define IR_CODE_GET_TIMER (uint8_t)(0xA8)
|
||||
//#define IR_CODE_GET_SHAKE (uint8_t)(0x18)
|
||||
|
||||
|
||||
|
||||
///* Exported variables prototypes ---------------------------------------------*/
|
||||
//extern UART_HandleTypeDef UartHandle;
|
||||
//extern __IO ITStatus UartReady;
|
||||
//extern TIM_HandleTypeDef TimHandle,Tim3Handle,Tim1Handle, Tim17Handle;
|
||||
//extern EXTI_HandleTypeDef exti_handle;
|
||||
//extern GPIO_InitTypeDef GPIO_InitStruct;
|
||||
|
||||
|
||||
|
||||
//extern IR_struct IR;
|
||||
|
||||
|
||||
///* Exported functions prototypes ---------------------------------------------*/
|
||||
//void APP_ErrorHandler(void);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,143 @@
|
||||
#include "ota_flash_interface.h"
|
||||
#include "arch.h"
|
||||
#include "dbg.h"
|
||||
// extern uint8_t ble_flash_operation_can_check(void);
|
||||
#include "ota_protocol.h"
|
||||
op_flash_t op_flash =
|
||||
{
|
||||
OP_IDEL,
|
||||
};
|
||||
|
||||
// extern op_flash_t op_flash;
|
||||
int ble_flash_later_sector_erase(uint32_t addr)
|
||||
{
|
||||
if (op_flash.op_state != OP_IDEL)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
// SPI_TypeDef *spi_handle = XC_SPI0;
|
||||
|
||||
// op_flash.spi_handle = spi_handle;
|
||||
op_flash.op_state = OP_WIAT_ERASE;
|
||||
op_flash.op_addr = addr;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int ble_flash_later_write_page(uint8_t *buff, uint32_t PageAddR)
|
||||
{
|
||||
if (op_flash.op_state != OP_IDEL)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
// SPI_TypeDef *spi_handle = XC_SPI0;
|
||||
|
||||
// op_flash.spi_handle = spi_handle;
|
||||
op_flash.op_state = OP_WIAT_WRITE;
|
||||
op_flash.op_addr = PageAddR;
|
||||
|
||||
for (int i = 0; i < FLASH_PAGE_SIZE; i++)
|
||||
{
|
||||
op_flash.op_buff[i] = buff[i];
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
int ble_flash_later_page_erase(uint32_t addr)
|
||||
{
|
||||
if (op_flash.op_state != OP_IDEL)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
op_flash.op_state = OP_WIAT_PAGE_ERASE;
|
||||
op_flash.op_addr = addr;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
__RAM_CODE void ble_flash_handle(void)
|
||||
{
|
||||
if (op_flash.op_state == OP_IDEL)
|
||||
{
|
||||
return;
|
||||
}
|
||||
else if (op_flash.op_state == OP_WIAT_WRITE)
|
||||
{
|
||||
{
|
||||
// LOGI("FMC_SPI_Flash_WritePage: op_flash.op_addr=%x\n", op_flash.op_addr);
|
||||
GLOBAL_INT_DISABLE();
|
||||
FMC_SPI_Flash_WritePage(op_flash.op_addr, op_flash.op_buff, 256);
|
||||
// if(op_flash.op_addr==0x31000 || op_flash.op_addr==OTA_PARAM_ADDR){
|
||||
// uint8_t data[FLASH_PAGE_SIZE];
|
||||
// FMC_SPI_Flash_ReadPage(op_flash.op_addr, data, FLASH_PAGE_SIZE);
|
||||
// LOGI("Flash Read data: \n");
|
||||
// for(uint16_t i = 0; i<FLASH_PAGE_SIZE; i++)
|
||||
// {
|
||||
// LOGI("%02x ", data[i]);
|
||||
// }
|
||||
// LOGI("\n");
|
||||
// LOGI("raw data: \n");
|
||||
// for(uint16_t i = 0; i<FLASH_PAGE_SIZE; i++)
|
||||
// {
|
||||
// LOGI("%02x ", op_flash.op_buff[i]);
|
||||
// }
|
||||
// LOGI("\n");
|
||||
// }
|
||||
// if( op_flash.op_addr==OTA_PARAM_ADDR){
|
||||
// LOGI("Flash write data: \n");
|
||||
// FMC_SPI_Flash_ReadPage(op_flash.op_addr, data, FLASH_PAGE_SIZE);
|
||||
// LOGI("Flash Read data: \n");
|
||||
// for(uint16_t i = 0; i<FLASH_PAGE_SIZE; i++)
|
||||
// {
|
||||
// LOGI("%02x ", op_flash.op_buff[i]);
|
||||
// }
|
||||
// LOGI("\n");
|
||||
// for(uint16_t i = 0; i<FLASH_PAGE_SIZE; i++)
|
||||
// {
|
||||
// LOGI("%02x ", data[i]);
|
||||
// }
|
||||
// LOGI("\n");
|
||||
// }
|
||||
GLOBAL_INT_RESTORE();
|
||||
op_flash.op_state = OP_IDEL;
|
||||
}
|
||||
}
|
||||
else if (op_flash.op_state == OP_WIAT_ERASE)
|
||||
{
|
||||
{
|
||||
// LOGI("FMC_SPI_Flash_Erase_Sector: op_flash.op_addr=%x\n", op_flash.op_addr);
|
||||
GLOBAL_INT_DISABLE();
|
||||
FMC_SPI_Flash_Erase_Sector(op_flash.op_addr);
|
||||
GLOBAL_INT_RESTORE();
|
||||
// LOGI("FMC_SPI_Flash_Erase_Sector: op_flash.op_addr1=%x\n", op_flash.op_addr);
|
||||
// {
|
||||
// uint8_t data[FLASH_PAGE_SIZE];
|
||||
// FMC_SPI_Flash_ReadPage(op_flash.op_addr, data, FLASH_PAGE_SIZE);
|
||||
//// LOGI("Erase Read data: \n");
|
||||
//// for(uint16_t i = 0; i<FLASH_PAGE_SIZE; i++)
|
||||
//// {
|
||||
//// LOGI("%02x ", data[i]);
|
||||
//// }
|
||||
//// LOGI("\n");
|
||||
// }
|
||||
op_flash.op_state = OP_IDEL;
|
||||
}
|
||||
} else if (op_flash.op_state == OP_WIAT_PAGE_ERASE)
|
||||
{
|
||||
{
|
||||
|
||||
LOGI("FMC_SPI_Flash_Erase_Page: op_flash.op_addr=%x\n", op_flash.op_addr);
|
||||
GLOBAL_INT_DISABLE();
|
||||
FMC_SPI_Flash_Page_Sector(op_flash.op_addr);
|
||||
GLOBAL_INT_RESTORE();
|
||||
op_flash.op_state = OP_IDEL;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
#ifndef __OTA_FLASH_INTERFACE_H_
|
||||
#define __OTA_FLASH_INTERFACE_H_
|
||||
|
||||
#if (USE_XIP)
|
||||
#if (USE_ROM_FLASH)
|
||||
#include "xc6xxx_fmc_spi.h"
|
||||
#endif // (USE_ROM_FLASH)
|
||||
#endif // !(USE_XIP)
|
||||
#include <stdint.h>
|
||||
#define FMC_SPI_Flash_WritePage xc_fmc_spi_flash_write_page
|
||||
#define FMC_SPI_Flash_ReadPage xc_fmc_spi_flash_read_page
|
||||
#define FMC_SPI_Flash_Erase_Sector xc_fmc_spi_flash_erase_sector
|
||||
#define FMC_SPI_Flash_Page_Sector xc_fmc_spi_flash_erase_page
|
||||
typedef enum
|
||||
{
|
||||
OP_IDEL = 0,
|
||||
OP_WIAT_WRITE ,
|
||||
OP_DO_WRITE ,
|
||||
OP_DONE_WRITE ,
|
||||
OP_WIAT_ERASE ,
|
||||
OP_DO_ERASE ,
|
||||
OP_DONE_ERASE ,
|
||||
OP_WIAT_PAGE_ERASE,
|
||||
} op_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8_t op_state;
|
||||
uint32_t op_addr;
|
||||
uint8_t __attribute__((aligned(4))) op_buff[(256+8)];
|
||||
// SPI_TypeDef *spi_handle;
|
||||
} op_flash_t;
|
||||
|
||||
extern op_flash_t op_flash;
|
||||
|
||||
void ble_flash_handle(void);
|
||||
|
||||
int ble_flash_later_write_page(uint8_t *buff, uint32_t PageAddR);
|
||||
|
||||
int ble_flash_later_sector_erase(uint32_t addr);
|
||||
|
||||
#endif // __OTA_FLASH_INTERFACE_H_
|
||||
|
||||
|
||||
@@ -0,0 +1,456 @@
|
||||
|
||||
/**
|
||||
****************************************************************************************
|
||||
*
|
||||
* @file ota_m4.c
|
||||
*
|
||||
* @brief
|
||||
*
|
||||
* Copyright (c) 2022 - 2025, XinChip
|
||||
* All rights reserved.p
|
||||
*
|
||||
****************************************************************************************
|
||||
*/
|
||||
|
||||
#include "rwip_config.h"
|
||||
|
||||
#if (BLE_APP_PRESENT)
|
||||
|
||||
#include "ota_protocol.h"
|
||||
#include "ota_server.h"
|
||||
#include "ota_flash_interface.h"
|
||||
#include "xc_drv_wdt.h"
|
||||
uint8_t ota_flag=0;
|
||||
extern struct app_env_tag app_env;
|
||||
static struct fotas_write_env fotas_write_env;
|
||||
__RAM_EM struct fotas_env fota_env;
|
||||
struct fotas_flag fotas_status={1,1,TRUES,FALSE,0,0,0,1,0};
|
||||
void xc_ota_wdt_init(WDT_InitCfg_t *wdt_cfg)
|
||||
{
|
||||
cpr_ctlapbclken_grctl__wdt_pclk_en__setf(ENABLE);
|
||||
cpr_rstctl_ctlapb_sw__wdt_rstn__setf(RSTCTL_ENABLE);
|
||||
cpr_rstctl_ctlapb_sw__wdt_rstn__setf(RSTCTL_DISABLE);
|
||||
|
||||
cpr_rstctl_wdtrst_mask_set(
|
||||
(WDT_SYS_RSTN_MASK_DISABLE | WDT_M0_RSTN_MASK_ENABLE));
|
||||
cpr_lp_ctl__wdt_pclk_sel__setf(DISABLE);
|
||||
cpr_lp_ctl__wdt_tclk_en__setf(ENABLE);
|
||||
|
||||
wdt_cr__wdt_rmod__setf(wdt_cfg->WorkMode);
|
||||
wdt_torr__wdt_top__setf(wdt_cfg->ReloadValue);
|
||||
}
|
||||
void wdt_reset_system(void)
|
||||
{
|
||||
|
||||
WDT_InitCfg_t wdt_cfg ;
|
||||
|
||||
NVIC_EnableIRQ(WDT_IRQn);
|
||||
|
||||
wdt_cfg.WorkMode = WDT_WORK_MODE0;
|
||||
|
||||
wdt_cfg.ReloadValue = WDT_ReloadValue_0xFFFF;
|
||||
|
||||
xc_ota_wdt_init( &wdt_cfg);
|
||||
xc_wdt_start();
|
||||
|
||||
}
|
||||
|
||||
static void fota_status_set(uint8_t status)
|
||||
{
|
||||
fota_env.status = status;
|
||||
}
|
||||
|
||||
static uint8_t fota_status_get(void)
|
||||
{
|
||||
return fota_env.status;
|
||||
}
|
||||
|
||||
// DEV->APP RSP OR CMD
|
||||
void xc_fota_dev_ack_cmd(uint16_t sn,
|
||||
uint8_t cmd,
|
||||
uint8_t data_or_atype, // data or ack type
|
||||
uint16_t fnum_or_para) // frame num or parameter
|
||||
{
|
||||
fota_env.ack.sn = sn;
|
||||
fota_env.ack.cmd = cmd;
|
||||
fota_env.ack.data_or_atype = data_or_atype;
|
||||
fota_env.ack.fnum_or_para = fnum_or_para;
|
||||
FOTAS_NOTIFY((uint8_t*)&fota_env.ack, sizeof(fota_env.ack), OTA_SVC_TX_CHAR_VAL);
|
||||
}
|
||||
|
||||
// The sector CRC check and write data to flash.
|
||||
static void xc_fotas_flash_write()
|
||||
{
|
||||
// only 1 time
|
||||
if (fotas_status.first_pack_write_flag)
|
||||
{
|
||||
fotas_status.first_pack_write_flag = FALSE;
|
||||
fotas_status.sector_erase_flag=1;
|
||||
for(int j=0;j<256;j++)
|
||||
{
|
||||
fotas_write_env.para_buf[j]=fota_env.sector_buf[0][j];
|
||||
}
|
||||
|
||||
// 0x1b000
|
||||
fotas_write_env.erase_addr = (fotas_write_env.para_buf[27]<<24)+(fotas_write_env.para_buf[26]<<16)+(fotas_write_env.para_buf[25]<<8)+(fotas_write_env.para_buf[24]); // data
|
||||
fotas_write_env.write_addr = (fotas_write_env.para_buf[27]<<24)+(fotas_write_env.para_buf[26]<<16)+(fotas_write_env.para_buf[25]<<8)+(fotas_write_env.para_buf[24]); // start para
|
||||
LOGI(" ota parameter fotas_write_env.write_addr=%x fotas_write_env.erase_addr=%x\n ", fotas_write_env.write_addr, fotas_write_env.erase_addr);
|
||||
|
||||
FLASH_SECTOR_ERASE( fotas_write_env.erase_addr);
|
||||
fotas_status.wtite_flag=1;
|
||||
}
|
||||
else // second sector
|
||||
{
|
||||
ble_flash_later_write_page(fota_env.sector_buf[0], fotas_write_env.write_addr);
|
||||
|
||||
fotas_status.wtite_flag=1;
|
||||
fotas_write_env.write_addr += 256;
|
||||
}
|
||||
fotas_write_env.erase_addr += 256; // The erase address needs to be aligned to 4096
|
||||
|
||||
LOGI(".");
|
||||
|
||||
fotas_write_env.cur_num = 0;
|
||||
|
||||
}
|
||||
|
||||
// first sector, 15 page
|
||||
void ota_write_flash()
|
||||
{
|
||||
//LOGI("yes %x %d\n",fotas_write_env.write_addr,fotas_status.wtitten_page_num);
|
||||
ble_flash_later_write_page(fota_env.sector_buf[fotas_status.wtitten_page_num], fotas_write_env.write_addr);
|
||||
fotas_write_env.write_addr += 256;
|
||||
fotas_status.wtitten_page_num+=1;
|
||||
fotas_write_env.erase_addr+=256;
|
||||
}
|
||||
// OTA data handler.
|
||||
|
||||
void xc_fota_write_data_handle(uint8_t *buffer, uint8_t cmd2)
|
||||
{
|
||||
uint16_t pid;
|
||||
struct img_hdr_t *img;
|
||||
struct fota_data *fota_data1;
|
||||
struct fota_data_att *data_att;
|
||||
uint16_t sn ;
|
||||
uint8_t cmd ;
|
||||
uint16_t len;
|
||||
uint16_t sw_ver;
|
||||
uint16_t rom_ver;
|
||||
|
||||
(void)sn;
|
||||
(void)cmd;
|
||||
(void)len;
|
||||
|
||||
if (fota_status_get() == FOTAS_DEV_READY)
|
||||
{
|
||||
switch (cmd2)
|
||||
{
|
||||
// FOTAS_STA_CMD = 1
|
||||
case FOTAS_STA_CMD: // 1.3 App->Dev, ota start req
|
||||
LOGI("line=%d, app->dev 1.3, ver same dev->app 2.1, ver diff dev->app 1.4\n",__LINE__);
|
||||
img = (struct img_hdr_t *)buffer;
|
||||
sn = img->sn;
|
||||
cmd = img->cmd;
|
||||
len = img->len;
|
||||
sw_ver = img->sw_ver;
|
||||
rom_ver = img->rom_ver;
|
||||
fota_env.crc = img->crc;
|
||||
fota_env.bin_size = img->bin_size;
|
||||
fota_env.pack_num = img->pack_num;
|
||||
|
||||
fota_status_set(FOTAS_DEV_READY);
|
||||
xc_fota_dev_ack_cmd(FOTAS_RSP, FOTAS_CMD, FOTAS_TRANS_SUC, 1); // 1 means fnum
|
||||
break;
|
||||
// FOTAS_INFO_CMD = 3
|
||||
case FOTAS_INFO_CMD: // 3.3 App->Dev, ota current info packet
|
||||
LOGI("line=%d,current info packet, 3.3 app->dev, 4.1 dev->app \n",__LINE__);
|
||||
if(fotas_status.sector_erase_flag && (fotas_write_env.erase_addr%4096 == 0))
|
||||
{
|
||||
ble_flash_later_sector_erase(fotas_write_env.erase_addr);
|
||||
LOGI("addr:%x\n",fotas_write_env.erase_addr);
|
||||
}
|
||||
|
||||
data_att = (struct fota_data_att *)buffer;
|
||||
fota_env.data_att.sn = data_att->sn;
|
||||
fota_env.data_att.len = data_att->len;
|
||||
fota_env.data_att.cmd = data_att->cmd;
|
||||
fota_env.data_att.segment_id = data_att->segment_id;
|
||||
fota_env.data_att.sector_size = data_att->sector_size; // 4096
|
||||
fota_env.data_att.crc = data_att->crc;
|
||||
|
||||
xc_fota_dev_ack_cmd(FOTAS_RSP, FOTAS_CMD, FOTAS_TRANS_SUC, 1);
|
||||
break;
|
||||
// FOTAS_DATA_CMD = 5
|
||||
case FOTAS_DATA_CMD: // 5.3 App->Dev
|
||||
LOGI("line=%d, 5.3 ota current data packet\n",__LINE__);
|
||||
fota_data1 = (struct fota_data *)buffer;
|
||||
pid = fota_data1->sn;
|
||||
fotas_write_env.cur_num += 1;
|
||||
memcpy((uint8_t *)fota_env.sector_buf + (pid - 1) * fotas_write_env.old_length, fota_data1->data, fotas_write_env.length);
|
||||
fotas_write_env.old_length = fotas_write_env.length;
|
||||
LOGI("fotas_write_env.cur_num=%x fotas_write_env.all_fnum=%x\n", fotas_write_env.cur_num, fotas_write_env.all_fnum);
|
||||
if (fotas_write_env.cur_num != fotas_write_env.all_fnum)
|
||||
{
|
||||
xc_fota_dev_ack_cmd(FOTAS_RSP, FOTAS_ACK, FOTAS_TANS_LOSE, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
xc_fota_dev_ack_cmd(FOTAS_RSP, FOTAS_CMD, FOTAS_TRANS_SUC, 0);
|
||||
|
||||
uint16_t last_sector_size = fota_env.data_att.sector_size % (FOTA_PAGE_NUM*FLASH_PAGE_SIZE);
|
||||
|
||||
if (last_sector_size)
|
||||
{
|
||||
memset((uint8_t *)fota_env.sector_buf + last_sector_size, 0xff, (FOTA_PAGE_NUM*FLASH_PAGE_SIZE) - last_sector_size);
|
||||
}
|
||||
|
||||
fota_status_set(FOTAS_DEV_BUSY);
|
||||
|
||||
xc_fotas_flash_write();
|
||||
}
|
||||
break;
|
||||
// FOTAS_DATA_CMD = 6
|
||||
case FOTAS_COM_CMD:
|
||||
LOGI("line=%d, 7.3 ota over\n",__LINE__);
|
||||
ble_flash_later_write_page(fotas_write_env.para_buf,OTA_PARAM_ADDR);
|
||||
xc_fota_dev_ack_cmd(FOTAS_RSP, FOTAS_CMD, FOTAS_SUCCEES, 1);
|
||||
|
||||
fotas_status.rsp_stat = 0;
|
||||
fotas_status.ack_idx = 0;
|
||||
|
||||
fota_status_set(FOTAS_TRANS_SUC);
|
||||
fotas_status.ota_succ_flag = 1;
|
||||
break;
|
||||
|
||||
default:
|
||||
LOGI("err cmd\n");
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
xc_fota_dev_ack_cmd(FOTAS_RSP, FOTAS_CMD, FOTAS_DEV_BUSY, 0);
|
||||
}
|
||||
}
|
||||
void fota_disconnect_reset()
|
||||
{
|
||||
fotas_status.rsp_stat = 0;
|
||||
fotas_status.ack_idx = 0;
|
||||
fotas_status.fir_rsp_stat = 1;
|
||||
fotas_status.first_pack_write_flag = TRUES;
|
||||
}
|
||||
|
||||
void ota_clear_status()
|
||||
{
|
||||
fotas_status.ota_succ_flag = 0;
|
||||
fotas_status.rsp_stat = 0;
|
||||
fotas_status.ack_idx = 0;
|
||||
fotas_write_env.cur_num = 0;
|
||||
fotas_status.fir_rsp_stat = 1;
|
||||
fotas_status.first_pack_write_flag = TRUES;
|
||||
fotas_status.sector_erase_flag=0;
|
||||
fotas_status.wtitten_page_num = 1;
|
||||
fotas_status.wtite_flag = 0; // Only when the valid data of the bin file is received, it will be set to 1
|
||||
fota_status_set(FOTAS_DEV_BUSY);
|
||||
}
|
||||
|
||||
// CMD and RSP handler.
|
||||
void xc_fota_cmd_rsp_handle(struct opencode_or_ack *wr_req)
|
||||
{
|
||||
uint8_t cmd = wr_req->cmd;
|
||||
uint8_t type = wr_req->data_or_atype;
|
||||
uint16_t fnum = wr_req->fnum_or_para;
|
||||
|
||||
// Each stage of ota will perform an empty packet interaction before starting data interaction
|
||||
if (cmd == FOTAS_CMD)
|
||||
{
|
||||
if (type == 0) // type is transmission
|
||||
{
|
||||
// 接收到当前包信息包 FOTAS_INFO_CMD 时, fotas_status.rsp_stat = 1
|
||||
// 接收到 2.2 app 发来的ack, 且 fotas_status.ack_idx = 0 时,rsp_stat += 1
|
||||
|
||||
switch (fotas_status.rsp_stat)
|
||||
{
|
||||
|
||||
// FOTAS_RSP_READY = 0
|
||||
case FOTAS_RSP_READY:
|
||||
LOGI("line=%d, [1.1 app->dev, 1.2 dev->app]\n",__LINE__);
|
||||
|
||||
ble_flash_later_page_erase(OTA_PARAM_ADDR);
|
||||
|
||||
|
||||
xc_fota_dev_ack_cmd(FOTAS_RSP, FOTAS_ACK, FOTAS_TRANS_SUC, 0x0001);
|
||||
fota_status_set(FOTAS_DEV_READY);
|
||||
break;
|
||||
|
||||
// FOTAS_RCV_SECT_START = 1
|
||||
case FOTAS_RCV_SECT_START:
|
||||
// 此次收到消息2.4 App->Dev, 后续没有2.5,这个消息是否需要设备端回复
|
||||
//
|
||||
LOGI("line=%d, [2.4,3.1 app->dev 3.2 dev->app] or [4.4,5.1 app->dev 5.2 dev->app ]\n",__LINE__);
|
||||
// start recv data
|
||||
fotas_write_env.all_fnum = fnum;
|
||||
xc_fota_dev_ack_cmd(FOTAS_RSP, FOTAS_ACK, FOTAS_TRANS_SUC, 1);
|
||||
fota_status_set(FOTAS_DEV_READY);
|
||||
|
||||
// when default =1, disconnect=1, ota over=1, fotas_status.fir_ack_idx = 1
|
||||
|
||||
fotas_status.ack_idx = FOTAS_RECV_START;
|
||||
|
||||
break;
|
||||
|
||||
case FOTAS_RCV_SECT_CANCEL: // no use, maybe use in the future
|
||||
LOGI("FOTAS_RCV_SECT_CANCEL\n");
|
||||
break;
|
||||
|
||||
default:
|
||||
LOGI("err fotas_status.rsp_stat:%d\n", fotas_status.rsp_stat);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (cmd == FOTAS_ACK) // type is ack, app -> dev, 首先需要 dev 发送给 app 一个包
|
||||
{
|
||||
if (fnum == 1)
|
||||
{
|
||||
// fotas_status.ack_idx = 1, When fotas_status.ack_idx=1, it means that the ota data packet has been delivered
|
||||
switch (fotas_status.ack_idx) // 因为 app 发的指令一样,但是设备回的指令不一样
|
||||
{
|
||||
// FOTAS_RSP_START = 0
|
||||
case FOTAS_RSP_START:
|
||||
LOGI("line=%d, sn=0, app->dev ack 2.2, dev->app 2.3 \n",__LINE__);
|
||||
|
||||
fotas_status.rsp_stat = FOTAS_RCV_SECT_START;
|
||||
|
||||
fota_env.send_buf.sn = FOTAS_SENT;
|
||||
fota_env.send_buf.len = 3;
|
||||
|
||||
if (fotas_status.ota_succ_flag)
|
||||
{
|
||||
fota_env.send_buf.cmd = 7; // 8.3 Dev->App (ota upgrade result)
|
||||
}
|
||||
else
|
||||
{
|
||||
fota_env.send_buf.cmd = 2; // 2.3 Dev->App (ota start rsp)
|
||||
}
|
||||
fota_env.send_buf.status = fota_status_get();
|
||||
FOTAS_NOTIFY((uint8_t*)&fota_env.send_buf, sizeof(fota_env.send_buf), OTA_SVC_TX_CHAR_VAL);
|
||||
break;
|
||||
|
||||
// FOTAS_RSP_START = 1
|
||||
case FOTAS_RSP_CMD:
|
||||
// 4.3 Dev->App (ota current packet rsp)
|
||||
LOGI("line=%d,ota current packet rsp, app->dev 4.2 ack, dev->app 4.3 req\n",__LINE__);
|
||||
fota_status_set(FOTAS_DEV_READY);
|
||||
fota_env.send_buf.sn = FOTAS_SENT;
|
||||
fota_env.send_buf.len = 3;
|
||||
fota_env.send_buf.cmd = 4;
|
||||
fota_env.send_buf.status = fota_status_get();
|
||||
FOTAS_NOTIFY((uint8_t*)&fota_env.send_buf, sizeof(fota_env.send_buf), OTA_SVC_TX_CHAR_VAL);
|
||||
break;
|
||||
|
||||
// FOTAS_RECV_START = 2
|
||||
case FOTAS_RECV_START:
|
||||
LOGI("line=%d, 4.3 ota current packet rsp \n",__LINE__);
|
||||
fota_status_set(FOTAS_DEV_READY);
|
||||
fota_env.send_buf.sn = FOTAS_SENT;
|
||||
fota_env.send_buf.len = 3;
|
||||
fota_env.send_buf.cmd = 4;
|
||||
fota_env.send_buf.status = fota_status_get();
|
||||
FOTAS_NOTIFY((uint8_t*)&fota_env.send_buf, sizeof(fota_env.send_buf), OTA_SVC_TX_CHAR_VAL);
|
||||
break;
|
||||
|
||||
default:
|
||||
LOGI("fotas_status.ack_idx:%d\n", fotas_status.ack_idx);
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if (fnum == 0)
|
||||
{
|
||||
switch (fotas_status.ack_idx)
|
||||
{
|
||||
case FOTAS_RSP_START:
|
||||
if (fotas_status.ota_succ_flag)
|
||||
{
|
||||
LOGI("\r\n");
|
||||
LOGI("fotas_status.ota_succ_flag\n");
|
||||
xc_ble_disconnect(app_env.slave_conidx, 0x16);
|
||||
wdt_reset_system();
|
||||
}
|
||||
else
|
||||
{
|
||||
// LOGI("ota start rsp succeed 2.4\n");
|
||||
}
|
||||
break;
|
||||
|
||||
case FOTAS_RECV_START:
|
||||
LOGI("line=%d, ota start recv data 4.4 \n",__LINE__);
|
||||
fota_status_set(FOTAS_DEV_READY);
|
||||
fotas_status.ack_idx = 1;
|
||||
break;
|
||||
|
||||
default:
|
||||
// LOGI(" fnum:%d fotas_status.ack_idx:%d\n",fnum,fotas_status.ack_idx);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
LOGI("error!!!!rsp\n");
|
||||
}
|
||||
}
|
||||
|
||||
// uint8_t flash_size;
|
||||
void xc_fota_server_write_ind(uint8_t *buffer, uint16_t buff_size)
|
||||
{
|
||||
struct opencode_or_ack *wr_req = (struct opencode_or_ack *)buffer;
|
||||
uint16_t sn = wr_req->sn;
|
||||
// fotas_write_env.length = buff_size - 3;
|
||||
// Data buffer boundary protection
|
||||
if(buff_size >= 3) {
|
||||
fotas_write_env.length = buff_size - 3;
|
||||
} else {
|
||||
fotas_write_env.length = buff_size;
|
||||
LOGI("err buff_size=%d\n", buff_size);
|
||||
}
|
||||
ota_flag=1;
|
||||
LOGI("debug: sn = %x \n", sn);
|
||||
switch (sn)
|
||||
{
|
||||
case FOTAS_RSP:
|
||||
LOGI("FOTAS_RSP\n");
|
||||
xc_fota_cmd_rsp_handle(wr_req);
|
||||
break;
|
||||
|
||||
default:
|
||||
LOGI("FOTAS_DATA\n");
|
||||
xc_fota_write_data_handle(buffer, wr_req->cmd);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void xc_ota_schedule()
|
||||
{
|
||||
ble_flash_handle();
|
||||
|
||||
if(fotas_status.wtite_flag)
|
||||
{
|
||||
if(op_flash.op_state == OP_IDEL)
|
||||
{
|
||||
if(fotas_status.wtitten_page_num == FOTA_PAGE_NUM)
|
||||
{
|
||||
fotas_status.wtitten_page_num = 1;
|
||||
fotas_status.wtite_flag = 0;
|
||||
LOGI("func=%s,line=%d\n",__func__,__LINE__);
|
||||
xc_fota_dev_ack_cmd(0, 1, 0, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
//LOGI("func=%s,line=%d\n",__func__,__LINE__);
|
||||
ota_write_flash();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
#endif // (BLE_APP_PRESENT)
|
||||
@@ -0,0 +1,233 @@
|
||||
#ifndef __OTA_PROTOCOL_H_
|
||||
#define __OTA_PROTOCOL_H_
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include "arch.h"
|
||||
//#include "ble.h"
|
||||
//#include "ble_flash_operation.h"
|
||||
|
||||
|
||||
// extern void data_sent(uint8_t *buffer, uint16_t length);
|
||||
|
||||
// #define DEBUG(...) //DEBUG(__VA_ARGS__)
|
||||
|
||||
#define PARAM_CNT 5
|
||||
#define TRUES 1
|
||||
#define FALSE 0
|
||||
#define CRC32_INITIAL 0
|
||||
#define DELAY_MS
|
||||
#define FLASH_INIT
|
||||
#define FLASH_WRITE_PAGE ble_flash_later_write_page
|
||||
#define FLASH_READ_PAGE
|
||||
#define FLASH_SECTOR_ERASE ble_flash_later_sector_erase
|
||||
#define FlASH_WR_ENABLE
|
||||
#define FLASH_WAIT_READY
|
||||
#define FLASH_RELEASE_PD
|
||||
#define FLASH_ENTER_PD
|
||||
#define FLASH_PAGE_ERASE
|
||||
#define CEILING(dividend, divisor) ((dividend) / (divisor) + (((dividend) % (divisor)) ? 1 : 0))
|
||||
#define FOTAS_NOTIFY ota_slave_send_data
|
||||
#define FOTA_PAGE_NUM 16
|
||||
#define OTA_PARAM_ADDR ((8*1024)-512)
|
||||
enum fota_write_cmd
|
||||
{
|
||||
FOTAS_STA_CMD = 1,
|
||||
FOTAS_STA_RSP_CMD,
|
||||
FOTAS_INFO_CMD,
|
||||
FOTAS_INFO_RSP_CMD,
|
||||
FOTAS_DATA_CMD,
|
||||
FOTAS_COM_CMD,
|
||||
FOTAS_RES_CMD,
|
||||
};
|
||||
enum fota_result_rsp
|
||||
{
|
||||
FOTAS_SUCCEES,
|
||||
FOTAS_FAIL,
|
||||
};
|
||||
enum fota_inf_stat
|
||||
{
|
||||
FOTAS_INF_OK,
|
||||
FOTAS_INF_ERR,
|
||||
};
|
||||
enum fota_stat_rsp
|
||||
{
|
||||
FOTAS_STAT_OK,
|
||||
FOTAS_SW_DIF,
|
||||
FOTAS_ROM_DIF,
|
||||
FOTAS_OVERLOUP,
|
||||
};
|
||||
|
||||
enum fota_sn
|
||||
{
|
||||
FOTAS_RSP,
|
||||
FOTAS_SENT,
|
||||
};
|
||||
|
||||
enum fota_cmd_type
|
||||
{
|
||||
FOTAS_CMD,
|
||||
FOTAS_ACK,
|
||||
};
|
||||
|
||||
enum fota_ack_type
|
||||
{
|
||||
FOTAS_TRANS_SUC,
|
||||
FOTAS_DEV_READY,
|
||||
FOTAS_DEV_BUSY,
|
||||
FOTAS_TANS_TIOUT,
|
||||
FOTAS_TANS_CANCEL,
|
||||
FOTAS_TANS_LOSE,
|
||||
FOTAS_TANS_BIN_ACK,
|
||||
FOTAS_STATE_MAX,
|
||||
};
|
||||
enum fota_rsp_stat
|
||||
{
|
||||
FOTAS_RSP_READY,
|
||||
FOTAS_RCV_SECT_START,
|
||||
FOTAS_RCV_SECT_CANCEL,
|
||||
};
|
||||
enum fota_rcv_rsp
|
||||
{
|
||||
FOTAS_RSP_START,
|
||||
FOTAS_RSP_CMD,
|
||||
FOTAS_RECV_START,
|
||||
};
|
||||
struct img_hdr_t
|
||||
{
|
||||
// Secure OTA uses the Signature for image validation instead of calculating a CRC, but the use
|
||||
// of CRC==CRC-Shadow for quick boot-up determination of a validated image is still used.
|
||||
// User-defined Image Version Number - default logic uses simple a '!=' comparison to start an OTA .
|
||||
uint16_t sn;
|
||||
uint8_t cmd;
|
||||
uint16_t len;
|
||||
uint16_t sw_ver;
|
||||
uint16_t rom_ver; // Rom ver.
|
||||
uint32_t bin_size; // Image fotas_write_env.length in 4-byte blocks ().
|
||||
uint32_t crc; // CRC must not be 0x00000000 or 0xFFFFFFFF.
|
||||
uint16_t pack_num;
|
||||
} __attribute__((packed));
|
||||
|
||||
struct fota_data_att
|
||||
{
|
||||
uint16_t sn;
|
||||
uint16_t len;
|
||||
uint8_t cmd;
|
||||
uint32_t segment_id;
|
||||
uint32_t crc;
|
||||
uint16_t sector_size;
|
||||
} __attribute__((packed));
|
||||
|
||||
struct fota_data
|
||||
{
|
||||
uint16_t sn;
|
||||
uint8_t cmd;
|
||||
uint8_t data[256];
|
||||
} __attribute__((packed));
|
||||
|
||||
/*
|
||||
APP->DEV
|
||||
sn,cmd,data,fnum
|
||||
DEV->APP
|
||||
sn,cmd,atype,para
|
||||
*/
|
||||
struct opencode_or_ack
|
||||
{
|
||||
uint16_t sn;
|
||||
uint8_t cmd;
|
||||
uint8_t data_or_atype; // data or ack type
|
||||
uint16_t fnum_or_para; // frame num or parameter
|
||||
uint16_t data;
|
||||
} __attribute__((packed));
|
||||
|
||||
struct dev_send_buf
|
||||
{
|
||||
uint16_t sn;
|
||||
uint16_t len;
|
||||
uint8_t cmd;
|
||||
uint16_t status;
|
||||
} __attribute__((packed));
|
||||
|
||||
struct fotas_env
|
||||
{
|
||||
uint16_t sn;
|
||||
uint32_t crc;
|
||||
uint8_t status;
|
||||
uint32_t bin_size;
|
||||
uint8_t sector_buf[FOTA_PAGE_NUM][FLASH_PAGE_SIZE];
|
||||
uint16_t pack_num;
|
||||
struct opencode_or_ack ack;
|
||||
struct dev_send_buf send_buf;
|
||||
struct fota_data_att data_att;
|
||||
} __attribute__((packed));
|
||||
struct fotas_write_env
|
||||
{
|
||||
int old_length;
|
||||
int length;
|
||||
uint32_t write_addr;
|
||||
uint32_t erase_addr;
|
||||
uint16_t all_fnum;
|
||||
uint16_t cur_num;
|
||||
uint8_t para_buf[256];
|
||||
};
|
||||
typedef struct
|
||||
{
|
||||
uint32_t Status; /**/
|
||||
uint32_t SoftVer; /**/
|
||||
uint32_t ACheck; /*crc32*/
|
||||
uint32_t AAddr; /*sector align*/
|
||||
uint32_t ALen; /*page align*/
|
||||
uint32_t BCheck; /**/
|
||||
uint32_t BAddr; /**/
|
||||
uint32_t BLen; /**/
|
||||
uint32_t ALoadAddr;
|
||||
uint32_t BLoadAddr;
|
||||
uint32_t RESERVED0[2];
|
||||
} PARAM_UNIT;
|
||||
struct fotas_flag
|
||||
{
|
||||
uint8_t fir_ack_idx;
|
||||
uint8_t fir_rsp_stat;
|
||||
uint8_t first_pack_write_flag;
|
||||
uint8_t ota_succ_flag ;
|
||||
uint8_t rsp_stat;
|
||||
uint8_t ack_idx ;
|
||||
uint8_t sector_erase_flag;
|
||||
uint8_t wtitten_page_num ; //
|
||||
uint8_t wtite_flag; // Only when the valid data of the bin file is received, it will be set to 1
|
||||
};
|
||||
typedef enum
|
||||
{
|
||||
InvalidStat = 0,
|
||||
ActiveAStat = 1,
|
||||
EraseAStat = 2,
|
||||
OverwriteAStat = 3,
|
||||
ActiveBStat = 4,
|
||||
EraseBStat = 5,
|
||||
OverwriteBStat = 6,
|
||||
} STATUS_T;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
PARAM_UNIT ParamUnit[PARAM_CNT];
|
||||
uint32_t ParamCrc32;
|
||||
uint32_t RESERVED1[3];
|
||||
} sBOOT_MESSAGE;
|
||||
extern uint32_t GenerateCrc32(uint32_t PartialCrc, char *Buffer, uint32_t Length);
|
||||
|
||||
void fota_disconnect_reset(void);
|
||||
|
||||
void xc_fota_dev_ack_cmd(uint16_t sn,
|
||||
uint8_t cmd,
|
||||
uint8_t data_or_atype,
|
||||
uint16_t fnum_or_para);
|
||||
|
||||
void xc_fota_server_write_ind(uint8_t *buffer, uint16_t buff_size);
|
||||
|
||||
void ota_write_flash(void);
|
||||
|
||||
void xc_ota_schedule(void);
|
||||
|
||||
void wdt_reset_system(void);
|
||||
|
||||
#endif // __OTA_PROTOCOL_H_
|
||||
@@ -0,0 +1,170 @@
|
||||
|
||||
/**
|
||||
****************************************************************************************
|
||||
*
|
||||
* @file ota_server.c
|
||||
*
|
||||
* @brief Custom Server profile database definitions.
|
||||
*
|
||||
* Copyright (c) 2022 - 2025, XinChip
|
||||
* All rights reserved.p
|
||||
*
|
||||
****************************************************************************************
|
||||
*/
|
||||
#include "rwip_config.h"
|
||||
|
||||
#if (BLE_APP_PRESENT)
|
||||
#include "ota_server.h"
|
||||
#include "ota_protocol.h"
|
||||
|
||||
uint8_t ota_srv_user_lid = GATT_INVALID_USER_LID;
|
||||
uint16_t ota_svc_start_hdl = GATT_INVALID_HDL;
|
||||
uint8_t ota_svc_tx_char_notify = DISABLE;
|
||||
|
||||
static const gatt_att_desc_t ota_server_atts[] = {
|
||||
[OTA_SVC_DECL] =
|
||||
{
|
||||
.uuid = 0x00,0x28,
|
||||
.info = GATT_ATT_RD_BIT | ATT_UUID(16),
|
||||
.ext_info = 0,
|
||||
},
|
||||
[OTA_SVC_RX_CHAR_DECL_CHAR] =
|
||||
{
|
||||
.uuid = 0x03, 0x28,
|
||||
.info = GATT_ATT_RD_BIT| ATT_UUID(16),
|
||||
.ext_info = 0,
|
||||
},
|
||||
[OTA_SVC_RX_CHAR_VAL] =
|
||||
{
|
||||
.uuid = OTA_SVC_RX_CHAR_UUID,
|
||||
.info = GATT_ATT_WC_BIT | GATT_ATT_RD_BIT | ATT_UUID(128),
|
||||
.ext_info =
|
||||
GATT_ATT_NO_OFFSET_BIT | OTA_SVC_RX_CHAR_VAL_MAX_LENGTH ,
|
||||
},
|
||||
[OTA_SVC_TX_CHAR_DECL_CHAR] =
|
||||
{
|
||||
.uuid = 0x03, 0x28,
|
||||
.info = GATT_ATT_RD_BIT| ATT_UUID(16),
|
||||
.ext_info = 0,
|
||||
},
|
||||
[OTA_SVC_TX_CHAR_VAL] =
|
||||
{
|
||||
.uuid = OTA_SVC_TX_CHAR_UUID,
|
||||
.info = GATT_ATT_N_BIT | ATT_UUID(128),
|
||||
.ext_info =
|
||||
GATT_ATT_NO_OFFSET_BIT | OTA_SVC_TX_CHAR_VAL_MAX_LENGTH,
|
||||
},
|
||||
[OTA_SVC_TX_CHAR_CFG] =
|
||||
{
|
||||
.uuid = 0x02, 0x29,
|
||||
.info = GATT_ATT_RD_BIT | GATT_ATT_WR_BIT | ATT_UUID(16),
|
||||
.ext_info = 0,
|
||||
},
|
||||
};
|
||||
|
||||
uint8_t ota_slave_send_data(uint8_t *data, uint8_t len, uint8_t att_idx);
|
||||
|
||||
uint16_t ota_srv_get_hdl_from_att_idx(uint8_t idx)
|
||||
{
|
||||
return ota_svc_start_hdl + idx ;
|
||||
}
|
||||
|
||||
// This function is called when GATT server user has initiated event send to
|
||||
// peer device or if an error occurs.
|
||||
__STATIC void ota_svc_cb_event_sent(uint8_t conidx, uint8_t user_lid,
|
||||
uint16_t dummy, uint16_t status)
|
||||
{
|
||||
LOGI("[%s] conidx:%d, usr_lid:%d, dummy:%d, status:%d \r\n", __func__,
|
||||
conidx, user_lid, dummy, status);
|
||||
}
|
||||
|
||||
// This function is called when peer want to read local attribute database
|
||||
// value.
|
||||
__STATIC void ota_svc_cb_att_read_get(uint8_t conidx, uint8_t user_lid,
|
||||
uint16_t token, uint16_t hdl,
|
||||
uint16_t offset, uint16_t max_length)
|
||||
{
|
||||
uint16_t status;
|
||||
uint8_t data[] = {0x12, 0x15, 0x46, 0x62};
|
||||
LOGI("[%s] conidx:%d, usr_lid:%d, token:%d, hdl:%d, offset:%d, "
|
||||
"max_length:%d \r\n",
|
||||
__func__, conidx, user_lid, token, hdl, offset, max_length);
|
||||
// Send result to peer device
|
||||
status = xc_ble_gatt_srv_read_cfm(conidx, user_lid, token, GAP_ERR_NO_ERROR,
|
||||
sizeof(data), sizeof(data), data);
|
||||
if (status != GATT_NO_ERROR) {
|
||||
LOGI_ERR("gatt_srv_read_cfm error 0x%x", status);
|
||||
}
|
||||
}
|
||||
|
||||
// This function is called during a write procedure to modify attribute handle.
|
||||
__STATIC void ota_svc_cb_att_val_set(uint8_t conidx, uint8_t user_lid,
|
||||
uint16_t token, uint16_t hdl,
|
||||
uint16_t offset, co_buf_t *p_data)
|
||||
{
|
||||
uint16_t length = co_buf_data_len(p_data);
|
||||
uint16_t status;
|
||||
LOGI("[%s] conidx:%d, usr_lid:%d, token:%d, hdl:%d, offset:%d \r\n",
|
||||
__func__, conidx, user_lid, token, hdl, offset);
|
||||
status =
|
||||
xc_ble_gatt_srv_write_cfm(conidx, user_lid, token, GAP_ERR_NO_ERROR);
|
||||
if (status != GATT_NO_ERROR) {
|
||||
LOGI_ERR("gatt_srv_write_cfm error 0x%x", status);
|
||||
}
|
||||
LOGI("length:%d data:\r\n", length);
|
||||
// DUMP_DATA_PRINTF(co_buf_data(p_data), length);
|
||||
xc_fota_server_write_ind(co_buf_data(p_data), length);
|
||||
// LOGI("hdl=%x %x\r\n", hdl, ota_srv_get_hdl_from_att_idx(OTA_SVC_TX_CHAR_CFG));
|
||||
if (hdl == ota_srv_get_hdl_from_att_idx(OTA_SVC_TX_CHAR_CFG)) {
|
||||
if ((co_buf_data(p_data)[1] == 0) && (co_buf_data(p_data)[0] == 0)) {
|
||||
ota_svc_tx_char_notify = DISABLE;
|
||||
} else {
|
||||
ota_svc_tx_char_notify = ENABLE;
|
||||
LOGI("ota_svc_tx_char_notify ENABLE\r\n");
|
||||
// uint8_t data[] = {0x12, 0x13, 0x14};
|
||||
// ota_slave_send_data(data, sizeof(data), OTA_SVC_TX_CHAR_VAL);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static const gatt_srv_cb_t ota_src_cb = {
|
||||
.cb_event_sent = ota_svc_cb_event_sent,
|
||||
.cb_att_read_get = ota_svc_cb_att_read_get,
|
||||
.cb_att_val_set = ota_svc_cb_att_val_set,
|
||||
};
|
||||
|
||||
uint8_t ota_svc_add(void)
|
||||
{
|
||||
int nb_att = sizeof(ota_server_atts) / sizeof(ota_server_atts[0]);
|
||||
uint16_t status;
|
||||
uint8_t ota_svc_uuid[GATT_UUID_128_LEN] = OTA_SVC_UUID;
|
||||
status = xc_ble_gatt_user_srv_register(GAP_LE_MTU_MAX, 0, &ota_src_cb,
|
||||
&ota_srv_user_lid);
|
||||
if (status != GATT_NO_ERROR) {
|
||||
LOGI_ERR("gatt_user_srv_register error 0x%x", status);
|
||||
}
|
||||
status = xc_ble_gatt_service_add(
|
||||
ota_srv_user_lid, GATT_UUID_128 << GATT_SVC_UUID_TYPE_LSB, ota_svc_uuid,
|
||||
nb_att, NULL, &(ota_server_atts[0]), nb_att, &ota_svc_start_hdl);
|
||||
if (status != GATT_NO_ERROR) {
|
||||
LOGI_ERR("xc_ble_gatt_service_add error 0x%x", status);
|
||||
}
|
||||
return status;
|
||||
}
|
||||
|
||||
uint8_t ota_slave_send_data(uint8_t *data, uint8_t len, uint8_t att_idx)
|
||||
{
|
||||
uint16_t status = INVALID_DATA;
|
||||
struct app_env_tag * app_env = get_app_env();
|
||||
if (app_env->slave_connected && ota_svc_tx_char_notify) {
|
||||
status = xc_ble_gatt_srv_notify(app_env->slave_conidx, ota_srv_user_lid, 0,
|
||||
ota_srv_get_hdl_from_att_idx(att_idx), len,
|
||||
data);
|
||||
if (status != GATT_NO_ERROR) {
|
||||
LOGI_ERR("gatt_srv_notify error 0x%x", status);
|
||||
}
|
||||
}
|
||||
return status;
|
||||
}
|
||||
|
||||
#endif // (BLE_APP_PRESENT)
|
||||
@@ -0,0 +1,45 @@
|
||||
/**
|
||||
****************************************************************************************
|
||||
*
|
||||
* @file ota_server.h
|
||||
*
|
||||
* @brief Custom Server profile database definitions.
|
||||
*
|
||||
* Copyright (c) 2022 - 2025, XinChip
|
||||
* All rights reserved.
|
||||
*
|
||||
****************************************************************************************
|
||||
*/
|
||||
#ifndef _OTA_SERVER_H_
|
||||
#define _OTA_SERVER_H_
|
||||
|
||||
#include "app_task.h"
|
||||
#include "dbg.h"
|
||||
#include "gatt.h"
|
||||
#include "gatt_msg.h"
|
||||
#include "rwble_hl_config.h"
|
||||
#include "xc_gatt_server_api.h"
|
||||
#include "xc6xxx.h"
|
||||
|
||||
#define OTA_SVC_UUID {0xFA, 0x34,0x9B,0x5F,0x80,0x00,0x00,0x80,0x00,0x10,0x00,0x00,0x10,0xFF,0x00,0x00}
|
||||
#define OTA_SVC_TX_CHAR_UUID 0xFB,0x34,0x9B,0x5F,0x80,0x00,0x00,0x80,0x00,0x10,0x00,0x00,0x11,0xFF,0x00,0x00
|
||||
#define OTA_SVC_RX_CHAR_UUID 0xFB,0x34,0x9B,0x5F,0x80,0x00,0x00,0x80,0x00,0x10,0x00,0x00,0x12,0xFF,0x00,0x00
|
||||
|
||||
|
||||
|
||||
#define OTA_SVC_RX_CHAR_VAL_MAX_LENGTH (512)
|
||||
#define OTA_SVC_TX_CHAR_VAL_MAX_LENGTH (512)
|
||||
|
||||
enum ota_svc
|
||||
{
|
||||
OTA_SVC_DECL = 0,
|
||||
OTA_SVC_RX_CHAR_DECL_CHAR,
|
||||
OTA_SVC_RX_CHAR_VAL,
|
||||
OTA_SVC_TX_CHAR_DECL_CHAR,
|
||||
OTA_SVC_TX_CHAR_VAL,
|
||||
OTA_SVC_TX_CHAR_CFG,
|
||||
};
|
||||
uint8_t ota_svc_add(void);
|
||||
uint8_t ota_slave_send_data(uint8_t *data, uint8_t len, uint8_t att_idx);
|
||||
#endif // _OTA_SERVER_H_
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,146 @@
|
||||
/*!
|
||||
* \file pga_adc.h
|
||||
*
|
||||
* \brief The head file of pga_adc.h
|
||||
*
|
||||
* \copyright Revised BSD License, see section \ref LICENSE.
|
||||
*
|
||||
* \code
|
||||
*
|
||||
* _ __ _ ________ _
|
||||
* | |/ /(_)___ / ____/ /_ (_)___
|
||||
* | // / __ \/ / / __ \/ / __ \
|
||||
* / |/ / / / / /___/ / / / / /_/ /
|
||||
* /_/|_/_/_/ /_/\____/_/ /_/_/ .___/
|
||||
* /_/
|
||||
* (C) 2022-2025 XinChip
|
||||
*
|
||||
* \endcode
|
||||
*
|
||||
* \author ( XinChip ) Alex-J
|
||||
*
|
||||
* \author ( XinChip )
|
||||
*/
|
||||
|
||||
/* Define to prevent recursive inclusion -------------------------------------*/
|
||||
#ifndef __BSP_AUDIO_ADC_H_
|
||||
#define __BSP_AUDIO_ADC_H_
|
||||
|
||||
/*-----------------------------------------------------------------------------------
|
||||
INCLUDE HEADE FILES
|
||||
------------------------------------------------------------------------------------*/
|
||||
#include "stdint.h"
|
||||
#include "xc60xx.h"
|
||||
#include "xc_drv_adc.h"
|
||||
#include "xc_drv_pga.h"
|
||||
/*------------------------------------------------------------------------------------
|
||||
Macros
|
||||
-------------------------------------------------------------------------------------*/
|
||||
#define DMA_ENABLE 0
|
||||
#define DMA_MULTIPLE_TRANS_ENABLE 0
|
||||
#define ADC_PWM_MODE 1
|
||||
#define MIC_SAMPLING_DEBUG 0 ///
|
||||
|
||||
#define USER_KEY_EN 1// KEY
|
||||
|
||||
#define MIC_GAIN_1_EN 1 // The first-level gain is enabled : 20DB
|
||||
#define MIC_GAIN_2_LEVEN 0X08 // Second-stage gain : 1.6DB * N( 0 - 0X0E )
|
||||
|
||||
#define ADC_CLK_DIV_0 (0x00UL)
|
||||
#define ADC_CLK_DIV_2 (0x01UL)
|
||||
#define ADC_CLK_DIV_4 (0x03UL)
|
||||
#define ADC_CLK_DIV_8 (0x07UL)
|
||||
#define ADC_CLK_DIV_16 (0x0fUL)
|
||||
|
||||
#define ADC_CLOCK_FREQ_8M ADC_CLK_DIV_0 // ADC_FREQ_8M
|
||||
#define ADC_CLOCK_FREQ_4M ADC_CLK_DIV_2 // ADC_FREQ_4M
|
||||
#define ADC_CLOCK_FREQ_2M ADC_CLK_DIV_4 // ADC_FREQ_2M
|
||||
#define ADC_CLOCK_FREQ_1M ADC_CLK_DIV_8 // ADC_FREQ_1M
|
||||
#define ADC_CLOCK_FREQ_500K ADC_CLK_DIV_16 // ADC_FREQ_500K
|
||||
|
||||
#define ADC_FREQ_CLOCK ADC_CLOCK_FREQ_2M // ADC CLOCK select (ADC_CLOCK_FREQ_1M - ADC_CLOCK_FREQ_4M )
|
||||
|
||||
#define MIC_SAMPLING_8K 0
|
||||
#define MIC_SAMPLING_16K 1
|
||||
#define SAMPLING_TYPE MIC_SAMPLING_16K
|
||||
|
||||
|
||||
#define MIC_SAMPLING_MAX_LEN 480//Recording cache buff length
|
||||
#define MIC_SAMPLING_BUFF_MAX 2//
|
||||
|
||||
|
||||
#define PCM_DATA_DEBUG_EN 0 // uart DEBUG pcm data
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
TypeDef
|
||||
-------------------------------------------------------------------------------------*/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int16_t data_buff[MIC_SAMPLING_BUFF_MAX][MIC_SAMPLING_MAX_LEN]; //audio data to the buff
|
||||
uint16_t data_rx_index; //data_buff index
|
||||
uint16_t data_rx_len; //data_buff len
|
||||
uint8_t save_buf_index; //double mic buff 1 index,data_buff[save_buf_index] []
|
||||
uint8_t get_buf_index; //double mic buff 1 index,data_buff[save_buf_index] []
|
||||
uint8_t save_data_buff_count; // mic buff SAVE index CON
|
||||
uint8_t buf_full_flag;
|
||||
|
||||
uint8_t sampling_wait_count; // Audio sampling data interval ,The sampling frequency is calculated based on the sampling speed of the ADC ,For example, 16K sampling
|
||||
uint8_t sampling_count; // Calculate the audio sampling points
|
||||
|
||||
int16_t pga_offset_val;
|
||||
} mic_audio_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
#if (MIC_SAMPLING_DEBUG)
|
||||
uint32_t audio_adc_rx_con;
|
||||
uint8_t audio_rx_stop_flag;
|
||||
#endif // MIC_SAMPLING_DEBUG
|
||||
|
||||
#if (MIC_SAMPLING_DEBUG)
|
||||
uint16_t rec_time;
|
||||
uint16_t rec_time_con;
|
||||
#endif //( MIC_SAMPLING_DEBUG)
|
||||
|
||||
uint8_t state;
|
||||
|
||||
} mic_record_t;
|
||||
|
||||
|
||||
enum
|
||||
{
|
||||
REC_INIT,
|
||||
REC_START,
|
||||
REC_STOP,
|
||||
};
|
||||
|
||||
#if (ADC_PWM_MODE)
|
||||
enum adc_fs {
|
||||
adc_fs_8k = 0,
|
||||
adc_fs_16k,
|
||||
};
|
||||
#endif
|
||||
/*------------------------------------------------------------------------------------
|
||||
Global Variables
|
||||
-------------------------------------------------------------------------------------*/
|
||||
extern mic_audio_t mic_audio;
|
||||
extern mic_record_t record;
|
||||
extern uint16_t adc_mic_average_val;
|
||||
/*------------------------------------------------------------------------------------
|
||||
Exported Functions
|
||||
-------------------------------------------------------------------------------------*/
|
||||
void audio_adc_rx_dma_event_handler(void);
|
||||
void audio_adc_rx_event_handler(uint16_t pga_adc_val);
|
||||
void audio_adc_start_get_value(ADC_ChannelTypeDef_t Channel, uint16_t *adc_val);
|
||||
void app_pga_init(void);
|
||||
void app_audio_record_init(void);
|
||||
void app_audio_record_start(void);
|
||||
void app_audio_record_stop(void);
|
||||
uint8_t app_get_record_state(void);
|
||||
uint8_t app_get_record_buff_full_state(void);
|
||||
void app_clr_record_buff_full_state(void);
|
||||
void app_record_process(void);
|
||||
void mic_pga_adc_demo(void);
|
||||
|
||||
#endif //__BSP_AUDIO_ADC_H_
|
||||
@@ -0,0 +1,100 @@
|
||||
/*!
|
||||
* \file pwm.c
|
||||
*
|
||||
* \brief Target pwm implementation
|
||||
*
|
||||
* \copyright Revised BSD License, see section \ref LICENSE.
|
||||
*
|
||||
* \code
|
||||
*
|
||||
* _ __ _ ________ _
|
||||
* | |/ /(_)___ / ____/ /_ (_)___
|
||||
* | // / __ \/ / / __ \/ / __ \
|
||||
* / |/ / / / / /___/ / / / / /_/ /
|
||||
* /_/|_/_/_/ /_/\____/_/ /_/_/ .___/
|
||||
* /_/
|
||||
* (C) 2022-2025 XinChip
|
||||
*
|
||||
* \endcode
|
||||
*
|
||||
* \author ( XinChip ) Alex-J
|
||||
*
|
||||
* \author ( XinChip )
|
||||
*/
|
||||
/*------------------------------------------------------------------------------------
|
||||
INCLUDE HEADE FILES
|
||||
--------------------------------------------------------------------------------------*/
|
||||
#include "pwm.h"
|
||||
#include "xc_drv_pwm.h"
|
||||
#include "rgblight.h"
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Macros
|
||||
-------------------------------------------------------------------------------------*/
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Global Variables
|
||||
-------------------------------------------------------------------------------------*/
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
TypeDef
|
||||
-------------------------------------------------------------------------------------*/
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Local Variables
|
||||
-------------------------------------------------------------------------------------*/
|
||||
uint16_t ch0_capture_data[CAPTURE_DATA_MAX];
|
||||
uint16_t ch1_capture_data[CAPTURE_DATA_MAX];
|
||||
uint16_t ch2_capture_data[CAPTURE_DATA_MAX];
|
||||
|
||||
PWM_CAP_STA_TypeDef pwm_cap_state = PWM_CAP_IDLE;
|
||||
PWM_BRK_STA_TypeDef pwm_brk_state = PWM_BRK_IDLE;
|
||||
PWM_BRK_CAP_STA_TypeDef pwm_brk_cap_state = PWM_BRK_CAP_VALID;
|
||||
pwm_ch_cap_dutycycle_t pwm_ch_cap_dutycycle;
|
||||
pwm_ch_cap_freq_t pwm_ch_cap_freq;
|
||||
pwm_ch_cap_type_t pwm_ch_cap_type;
|
||||
/*------------------------------------------------------------------------------------
|
||||
Func Prototype
|
||||
-------------------------------------------------------------------------------------*/
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Functions
|
||||
-------------------------------------------------------------------------------------*/
|
||||
void UpdateDisplay(void)
|
||||
{
|
||||
xc_pwm_dutycycle_set(PWM2_IDX,256,r_DutyCycle*Brightness/10);
|
||||
xc_pwm_dutycycle_set(PWM3_IDX,256,g_DutyCycle*Brightness/10);
|
||||
xc_pwm_dutycycle_set(PWM5_IDX,256,b_DutyCycle*Brightness/10);
|
||||
}
|
||||
/**
|
||||
* @brief app_pwm_init
|
||||
* @details
|
||||
* @param void
|
||||
* @retval void
|
||||
*/
|
||||
void app_pwm_init()
|
||||
{
|
||||
// PWM0 and PWM1 can be mapped to other pins, PWM0 and PWM1 have inverted output.
|
||||
// PWM(HZ) = PWMCLK(16000000)/(DutyCycleAcc*(period+1))/2
|
||||
PWM_InitCfg_t pwm_cfg;
|
||||
|
||||
pwm_cfg.DutyCycleAcc = 256;
|
||||
pwm_cfg.Period = 29;
|
||||
pwm_cfg.SrcClk = PWM_CLK_SRC_32M_DIV;
|
||||
pwm_cfg.SrcEnable = PWM_EN_SEL_ALL;
|
||||
|
||||
pwm_cfg.DutyCycle =240; //r_DutyCycle*Brightness/10;
|
||||
pwm_cfg.OutputPin = GPIO_12;
|
||||
xc_pwm_init(PWM2_IDX, &pwm_cfg);//R
|
||||
|
||||
pwm_cfg.DutyCycle = g_DutyCycle*Brightness/10;
|
||||
pwm_cfg.OutputPin = GPIO_13; // The pin cannot be changed
|
||||
xc_pwm_init(PWM3_IDX, &pwm_cfg);//G
|
||||
|
||||
pwm_cfg.DutyCycle = b_DutyCycle*Brightness/10;
|
||||
pwm_cfg.OutputPin = GPIO_1; // The pin cannot be changed
|
||||
xc_pwm_init(PWM5_IDX, &pwm_cfg);//B
|
||||
|
||||
xc_pwm_start_all();
|
||||
}
|
||||
|
||||
@@ -0,0 +1,109 @@
|
||||
/*!
|
||||
* \file pwm_test.h
|
||||
*
|
||||
* \brief The head file of pwm_test.c
|
||||
*
|
||||
* \copyright Revised BSD License, see section \ref LICENSE.
|
||||
*
|
||||
* \code
|
||||
*
|
||||
* _ __ _ ________ _
|
||||
* | |/ /(_)___ / ____/ /_ (_)___
|
||||
* | // / __ \/ / / __ \/ / __ \
|
||||
* / |/ / / / / /___/ / / / / /_/ /
|
||||
* /_/|_/_/_/ /_/\____/_/ /_/_/ .___/
|
||||
* /_/
|
||||
* (C) 2022-2025 XinChip
|
||||
*
|
||||
* \endcode
|
||||
*
|
||||
* \author ( XinChip ) Alex-J
|
||||
*
|
||||
* \author ( XinChip )
|
||||
*/
|
||||
|
||||
/* Define to prevent recursive inclusion -------------------------------------*/
|
||||
#ifndef __PWM_TEST_H__
|
||||
#define __PWM_TEST_H__
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*-----------------------------------------------------------------------------------
|
||||
INCLUDE HEADE FILES
|
||||
------------------------------------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdint.h>
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Macros
|
||||
-------------------------------------------------------------------------------------*/
|
||||
#define DEVIATION_FREQ 10
|
||||
#define DEVIATION_DUTYCYCLE 10
|
||||
#define CAPTURE_DATA_MAX 101
|
||||
#define CAPTURE_VALID_POS 4
|
||||
/*------------------------------------------------------------------------------------
|
||||
TypeDef
|
||||
-------------------------------------------------------------------------------------*/
|
||||
typedef enum
|
||||
{
|
||||
PWM_CAP_IDLE = 0,
|
||||
PWM_CAP_FREQ,
|
||||
PWM_CAP_DUTYCYCLE,
|
||||
PWM_CAP_RIGHT,
|
||||
PWM_CAP_ERROR,
|
||||
} PWM_CAP_STA_TypeDef;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
PWM_BRK_IDLE = 0,
|
||||
PWM_BRK_START,
|
||||
PWM_BRK_STOP,
|
||||
} PWM_BRK_STA_TypeDef;
|
||||
typedef enum
|
||||
{
|
||||
PWM_BRK_CAP_VALID,
|
||||
PWM_BRK_CAP_RECOVERY,
|
||||
PWM_BRK_CAP_ERROR,
|
||||
} PWM_BRK_CAP_STA_TypeDef;
|
||||
typedef struct pwm_ch_cap_freq
|
||||
{
|
||||
uint16_t ch0_cap_freq;
|
||||
uint16_t ch1_cap_freq;
|
||||
uint16_t ch2_cap_freq;
|
||||
} pwm_ch_cap_freq_t;
|
||||
typedef struct pwm_ch_cap_dutycycle
|
||||
{
|
||||
uint16_t ch0_cap_dutycycle;
|
||||
uint16_t ch1_cap_dutycycle;
|
||||
uint16_t ch2_cap_dutycycle;
|
||||
} pwm_ch_cap_dutycycle_t;
|
||||
typedef struct pwm_ch_cap_type
|
||||
{
|
||||
uint8_t ch0_cap_type;
|
||||
uint8_t ch1_cap_type;
|
||||
uint8_t ch2_cap_type;
|
||||
} pwm_ch_cap_type_t;
|
||||
typedef enum
|
||||
{
|
||||
PWM_CAP_TYPE_FREQ,
|
||||
PWM_CAP_TYPE_DUTYCYCLE,
|
||||
} PWM_CAP_TYPE_TypeDef;
|
||||
/*------------------------------------------------------------------------------------
|
||||
Global Variables
|
||||
-------------------------------------------------------------------------------------*/
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Exported Functions
|
||||
-------------------------------------------------------------------------------------*/
|
||||
void app_pwm_init(void);
|
||||
void UpdateDisplay(void);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __PWM_TEST_H__ */
|
||||
|
||||
|
||||
@@ -0,0 +1,804 @@
|
||||
#ifndef _RGBLIGHT_C_
|
||||
#define _RGBLIGHT_C_
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#include "pwm.h"
|
||||
#include "xc_drv_pwm.h"
|
||||
#include "rgblight.h"
|
||||
#include "timer.h"
|
||||
#include "key.h"
|
||||
#include "nec_infrared.h"
|
||||
#include "usr_server.h"
|
||||
/*------------------------------------------------------------------------------------
|
||||
Macros
|
||||
-------------------------------------------------------------------------------------*/
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Global Variables
|
||||
-------------------------------------------------------------------------------------*/
|
||||
PWM_DutyCycle_t pwm_duty_cycle;
|
||||
|
||||
uint32_t rgb_DutyCycleAcc = 255;
|
||||
uint32_t r_DutyCycle = 127;
|
||||
uint32_t g_DutyCycle = 127;
|
||||
uint32_t b_DutyCycle = 127;
|
||||
|
||||
uint8_t direction = 0;
|
||||
uint8_t mode = 0;
|
||||
uint8_t Brightness = 10;
|
||||
uint8_t TimeSpeed = 0;//跳变和频闪速度200ms
|
||||
uint8_t FadeSpeed = 2;//渐变速度2ms
|
||||
uint8_t CurrentStatus = STATICEFFECT;
|
||||
uint8_t CurrentModel = DYNAMICMODE;
|
||||
uint8_t deviceStatus = POWERON; // 0:POWERON 1:POWEROFF
|
||||
uint8_t ModeTemp = 0;//mode缓存
|
||||
uint8_t MatchOverFlag = 0;//上电定时5S结束标志
|
||||
uint8_t MODE19_i = 0;
|
||||
|
||||
uint16_t speedOption[10] = {200, 300, 400, 500, 600, 700, 800, 900, 1000, 1100}; //跳变和频闪速度ms
|
||||
//uint8_t ble_value = 0;
|
||||
//uint8_t ble_user_code = 0;
|
||||
|
||||
ble_data_msg user_ble_data_msg;
|
||||
ble_data_msg *p_ble_data_msg = NULL;
|
||||
/*------------------------------------------------------------------------------------
|
||||
TypeDef
|
||||
-------------------------------------------------------------------------------------*/
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Function
|
||||
-------------------------------------------------------------------------------------*/
|
||||
/**
|
||||
* @brief ble_callback
|
||||
* @details
|
||||
* @param value0:对应遥控的的码值
|
||||
value1:应用程序的掩码,必须掩码相同,才会进出BLE信息处理
|
||||
* @retval void
|
||||
*/
|
||||
void ble_callback(uint8_t value0,uint8_t value1,uint8_t value2,uint8_t value3)
|
||||
{
|
||||
// ble_value = value0;
|
||||
// ble_user_code = value1;
|
||||
|
||||
user_ble_data_msg.tpye = value3;
|
||||
user_ble_data_msg.r_value = value2;
|
||||
user_ble_data_msg.g_value = value1;
|
||||
user_ble_data_msg.b_value_mode_speed_brightness = value0;
|
||||
|
||||
p_ble_data_msg = &user_ble_data_msg;
|
||||
|
||||
// only_read_charactertics_buffer[0] = p_ble_data_msg->r_value;
|
||||
// only_read_charactertics_buffer[1] = p_ble_data_msg->g_value;
|
||||
// only_read_charactertics_buffer[2] = p_ble_data_msg->b_value_mode_speed_brightness;
|
||||
// only_read_charactertics_buffer[3] = p_ble_data_msg->tpye;
|
||||
}
|
||||
/**
|
||||
* @brief ir_message_process
|
||||
* @details
|
||||
* @param void
|
||||
* @retval void
|
||||
*/
|
||||
void ble_message_process(void)
|
||||
{
|
||||
|
||||
// if(ble_user_code ==0xEE)//核对BLE用户码
|
||||
// {
|
||||
// ble_user_code = 0;
|
||||
// functionOption(ble_value);
|
||||
// }
|
||||
if(p_ble_data_msg != NULL)
|
||||
{
|
||||
switch(p_ble_data_msg->tpye)
|
||||
{
|
||||
case 00://rgb
|
||||
r_DutyCycle = p_ble_data_msg->r_value;
|
||||
g_DutyCycle = p_ble_data_msg->g_value;
|
||||
b_DutyCycle = p_ble_data_msg->b_value_mode_speed_brightness;
|
||||
|
||||
CurrentStatus = STATICEFFECT;
|
||||
CurrentModel = TEMPERATUREMODE;
|
||||
break;
|
||||
case 01://亮度
|
||||
Brightness = p_ble_data_msg->b_value_mode_speed_brightness;
|
||||
break;
|
||||
case 02://速度
|
||||
TimeSpeed = p_ble_data_msg->b_value_mode_speed_brightness;
|
||||
FadeSpeed = p_ble_data_msg->b_value_mode_speed_brightness + 2;
|
||||
break;
|
||||
case 03://模式
|
||||
mode = p_ble_data_msg->b_value_mode_speed_brightness;
|
||||
CurrentStatus = mode > MODE0 ? DYNAMICEEFECT : STATICEFFECT;
|
||||
CurrentModel = DYNAMICMODE;
|
||||
updateParameter();//更新动态模式参数
|
||||
startTimer(&timer1, 1); // 立刻启动定时器1,设定间隔为1ms,执行1次
|
||||
break;
|
||||
case 04://开机,关机,音频
|
||||
functionOption(p_ble_data_msg->b_value_mode_speed_brightness);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
// only_read_charactertics_buffer[1] = (uint8_t)(r_DutyCycle*Brightness/10);
|
||||
// only_read_charactertics_buffer[2] = g_DutyCycle;
|
||||
// only_read_charactertics_buffer[3] = b_DutyCycle;
|
||||
// only_read_charactertics_buffer[4] = Brightness;
|
||||
UpdateDisplay();//更新显示
|
||||
p_ble_data_msg = NULL;
|
||||
|
||||
// only_read_charactertics_buffer[0] = (uint8_t)(r_DutyCycle*Brightness/10);
|
||||
// only_read_charactertics_buffer[1] = Brightness;
|
||||
// only_read_charactertics_buffer[2] = (uint8_t)r_DutyCycle;
|
||||
|
||||
}
|
||||
}
|
||||
/**
|
||||
* @brief ir_message_process
|
||||
* @details
|
||||
* @param void
|
||||
* @retval void
|
||||
*/
|
||||
void ir_message_process(void)
|
||||
{
|
||||
if(IR.rece_ok && IR.user_code ==0x47DF)//核对用户码
|
||||
{
|
||||
IR.rece_ok = 0;
|
||||
IR.user_code = 0;
|
||||
functionOption(IR.hig_8bit);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief key_message_process
|
||||
* @details
|
||||
* @param void
|
||||
* @retval void
|
||||
*/
|
||||
void key_message_process(uint16_t msg)
|
||||
{
|
||||
switch(msg)
|
||||
{
|
||||
case REC_KEY_SHORT_DOWN:
|
||||
mode = mode >= MODE19 ? MODE0 : mode++;
|
||||
break;
|
||||
case REC_KEY_UP_SHORT_DOWN:
|
||||
|
||||
break;
|
||||
case REC_KEY_DOWN_SHORT_DOWN:
|
||||
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
/**
|
||||
* @brief adc_mic_pwm_process
|
||||
* @details
|
||||
* @param void
|
||||
* @retval void
|
||||
*/
|
||||
void adc_mic_pwm_process(void)
|
||||
{
|
||||
|
||||
}
|
||||
// 将音频信号值映射到RGB颜色空间中
|
||||
void mapAudioToRGB(uint16_t audioValue)
|
||||
{
|
||||
if(audioValue > 1023)
|
||||
{
|
||||
audioValue = 1023;
|
||||
}
|
||||
// 映射到红色通道
|
||||
r_DutyCycle= audioValue % 256;
|
||||
// 映射到绿色通道
|
||||
g_DutyCycle= (audioValue / 2) % 256;
|
||||
// 映射到蓝色通道
|
||||
b_DutyCycle = (audioValue / 4) % 256;
|
||||
|
||||
UpdateDisplay();//更新显示
|
||||
}
|
||||
|
||||
///*********************************************************************************************************************
|
||||
//色温调节
|
||||
//*********************************************************************************************************************/
|
||||
//void TemperatureAdjustment(unsigned char value)
|
||||
//{
|
||||
// if (value < 201)
|
||||
// {
|
||||
// g_DutyCycle = value;
|
||||
// b_DutyCycle = MAXDUTY - value;
|
||||
// }
|
||||
//}
|
||||
/*********************************************************************************************************************
|
||||
RGB色彩调节
|
||||
*********************************************************************************************************************/
|
||||
void rgbColorModel(uint8_t value, uint32_t *r_DutyCycle, uint32_t *g_DutyCycle, uint32_t *b_DutyCycle)
|
||||
{
|
||||
if (value < 67)
|
||||
{
|
||||
*b_DutyCycle = 0;
|
||||
*g_DutyCycle = (unsigned char)((value / 66.0) * 200);
|
||||
*r_DutyCycle = 200 - *g_DutyCycle;
|
||||
}
|
||||
else if (value < 134)
|
||||
{
|
||||
value -= 67;
|
||||
*r_DutyCycle = 0;
|
||||
*b_DutyCycle = (unsigned char)((value / 66.0) * 200);
|
||||
*g_DutyCycle = 200 - *b_DutyCycle;
|
||||
}
|
||||
else if (value < 201)
|
||||
{
|
||||
value -= 134;
|
||||
*g_DutyCycle = 0;
|
||||
*r_DutyCycle = (unsigned char)((value / 66.0) * 200);
|
||||
*b_DutyCycle = 200 - *r_DutyCycle;
|
||||
}
|
||||
}
|
||||
/*********************************************************************************************************************
|
||||
亮度,速度,开关调节
|
||||
*********************************************************************************************************************/
|
||||
void functionOption(uint8_t key_value)
|
||||
{
|
||||
if (deviceStatus == POWERON || key_value == ON) //关机状态只有ON可以识别
|
||||
{
|
||||
switch (key_value)
|
||||
{
|
||||
case BRIGHTNESS_IN:
|
||||
if (Brightness < 10)
|
||||
Brightness++;
|
||||
break;
|
||||
case BRIGHTNESS_RE:
|
||||
if (Brightness > 1)
|
||||
Brightness--;
|
||||
break;
|
||||
case SPEED_IN:
|
||||
if (TimeSpeed > 0 && CurrentStatus == DYNAMICEEFECT && mode != MODE19)
|
||||
{
|
||||
TimeSpeed --;
|
||||
FadeSpeed --;
|
||||
}
|
||||
else if (TimeSpeed > 0 && CurrentStatus == DYNAMICEEFECT && mode == MODE19 && MODE19_i != MODE0)
|
||||
{
|
||||
TimeSpeed --;
|
||||
FadeSpeed --;
|
||||
}
|
||||
break;
|
||||
case SPEED_RE:
|
||||
if (TimeSpeed < 9 && CurrentStatus == DYNAMICEEFECT && mode != MODE19)
|
||||
{
|
||||
TimeSpeed ++;
|
||||
FadeSpeed ++;
|
||||
}
|
||||
else if (TimeSpeed < 9 && CurrentStatus == DYNAMICEEFECT && mode == MODE19 && MODE19_i != MODE0)
|
||||
{
|
||||
TimeSpeed ++;
|
||||
FadeSpeed ++;
|
||||
}
|
||||
break;
|
||||
case MODE_IN:
|
||||
if (mode <= MODE19)
|
||||
{
|
||||
if (CurrentModel == TEMPERATUREMODE)
|
||||
mode = ModeTemp;
|
||||
else if (mode < MODE19)
|
||||
mode ++;
|
||||
|
||||
CurrentStatus = mode > MODE0 ? DYNAMICEEFECT : STATICEFFECT;
|
||||
|
||||
CurrentModel = DYNAMICMODE;
|
||||
|
||||
updateParameter();//更新动态模式,初始值
|
||||
startTimer(&timer1, 1); // 立刻启动定时器1,设定间隔为1ms,执行1次
|
||||
}
|
||||
break;
|
||||
case MODE_RE:
|
||||
if (mode >= MODE0)
|
||||
{
|
||||
if (CurrentModel == TEMPERATUREMODE)
|
||||
mode = ModeTemp;
|
||||
else if (mode > MODE0)
|
||||
mode --;
|
||||
|
||||
CurrentStatus = mode > MODE0 ? DYNAMICEEFECT : STATICEFFECT;
|
||||
|
||||
CurrentModel = DYNAMICMODE;
|
||||
|
||||
updateParameter();//更新动态模式参数
|
||||
startTimer(&timer1, 1); // 立刻启动定时器1,设定间隔为1ms,执行1次
|
||||
}
|
||||
break;
|
||||
case ON:
|
||||
if (deviceStatus == POWEROFF) //关机状态按开机才有识别
|
||||
{
|
||||
if (CurrentStatus == DYNAMICEEFECT) //动态效果才进入,mode>=MODE3,必须更新参数
|
||||
{
|
||||
updateParameter();
|
||||
UpdateDisplay();//更新显示
|
||||
}
|
||||
// xc_pwm_start(PWM2_IDX);
|
||||
// xc_pwm_start(PWM3_IDX);
|
||||
// xc_pwm_start(PWM5_IDX);
|
||||
xc_pwm_start_all();
|
||||
|
||||
startTimer(&timer1, 1); // 立刻启动定时器1,设定间隔为1ms,执行1次
|
||||
deviceStatus = POWERON;//开机
|
||||
}
|
||||
break;
|
||||
case OFF:
|
||||
// xc_pwm_stop(PWM2_IDX);
|
||||
// xc_pwm_stop(PWM3_IDX);
|
||||
// xc_pwm_stop(PWM5_IDX);
|
||||
|
||||
xc_pwm_stop_all();
|
||||
|
||||
stopTimer(&timer1);
|
||||
deviceStatus = POWEROFF;//关机
|
||||
break;
|
||||
case MUSIC1:
|
||||
app_audio_record_start();
|
||||
break;
|
||||
default:
|
||||
// if (key_value < 201)
|
||||
// {
|
||||
// rgbColorModel(key_value, &r_DutyCycle, &g_DutyCycle, &b_DutyCycle);
|
||||
// stopTimer(&timer1);
|
||||
// CurrentStatus = STATICEFFECT;
|
||||
// CurrentModel = TEMPERATUREMODE;
|
||||
// ModeTemp = mode;//缓存
|
||||
// }
|
||||
break;
|
||||
}
|
||||
if(key_value != MUSIC1)
|
||||
app_audio_record_stop();//关闭adc
|
||||
UpdateDisplay();//更新显示
|
||||
}
|
||||
|
||||
}
|
||||
void updateParameter(void)
|
||||
{
|
||||
switch (mode)
|
||||
{
|
||||
case MODE0:
|
||||
break;
|
||||
case MODE2:
|
||||
direction = 0;
|
||||
r_DutyCycle = MINDUTY;
|
||||
g_DutyCycle = MINDUTY;
|
||||
b_DutyCycle = MAXDUTY;
|
||||
break;
|
||||
case MODE19:
|
||||
MODE19_i = 0;
|
||||
startTimer(&timer5, 20000); // 立刻启动定时器5,设定间隔为20s
|
||||
default:
|
||||
direction = 0;
|
||||
r_DutyCycle = MINDUTY;
|
||||
g_DutyCycle = MINDUTY;
|
||||
b_DutyCycle = MINDUTY;
|
||||
break;
|
||||
}
|
||||
}
|
||||
void updateParameterMode19(unsigned char mode)//mode19()函数特定使用
|
||||
{
|
||||
switch (mode)
|
||||
{
|
||||
case MODE0:
|
||||
break;
|
||||
case MODE2:
|
||||
direction = 0;
|
||||
r_DutyCycle = MINDUTY;
|
||||
g_DutyCycle = MINDUTY;
|
||||
b_DutyCycle = MAXDUTY;
|
||||
break;
|
||||
default:
|
||||
direction = 0;
|
||||
r_DutyCycle = MINDUTY;
|
||||
g_DutyCycle = MINDUTY;
|
||||
b_DutyCycle = MINDUTY;
|
||||
break;
|
||||
}
|
||||
}
|
||||
/*********************************************************************************************************************
|
||||
模式
|
||||
*********************************************************************************************************************/
|
||||
void Mode0(void)//rgb同时显示白色
|
||||
{
|
||||
r_DutyCycle = MAXDUTY;
|
||||
g_DutyCycle = MAXDUTY;
|
||||
b_DutyCycle = MAXDUTY;
|
||||
UpdateDisplay();//更新显示
|
||||
}
|
||||
void Mode1(void)//RGB同时呼吸
|
||||
{
|
||||
if (!direction)
|
||||
{
|
||||
r_DutyCycle ++;
|
||||
g_DutyCycle ++;
|
||||
b_DutyCycle ++;
|
||||
if (r_DutyCycle == MAXDUTY)
|
||||
direction = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
r_DutyCycle --;
|
||||
g_DutyCycle --;
|
||||
b_DutyCycle --;
|
||||
if (r_DutyCycle == MINDUTY)
|
||||
direction = 0;
|
||||
}
|
||||
|
||||
UpdateDisplay();//更新显示
|
||||
}
|
||||
void Mode2(void) // RGB渐变
|
||||
{
|
||||
switch (direction)
|
||||
{
|
||||
case 0:
|
||||
r_DutyCycle++;
|
||||
g_DutyCycle = 0;
|
||||
b_DutyCycle --;
|
||||
if (r_DutyCycle == MAXDUTY)
|
||||
direction++;
|
||||
break;
|
||||
case 1:
|
||||
r_DutyCycle--;
|
||||
g_DutyCycle ++;
|
||||
b_DutyCycle = 0;
|
||||
if (g_DutyCycle == MAXDUTY)
|
||||
direction++;
|
||||
break;
|
||||
case 2:
|
||||
r_DutyCycle = 0;
|
||||
g_DutyCycle--;
|
||||
b_DutyCycle ++;
|
||||
if (b_DutyCycle == MAXDUTY)
|
||||
direction = 0;
|
||||
break;
|
||||
}
|
||||
UpdateDisplay(); // 更新显示
|
||||
}
|
||||
|
||||
void Mode3(void) // RGB呼吸
|
||||
{
|
||||
switch (direction)
|
||||
{
|
||||
case 0:
|
||||
r_DutyCycle++;
|
||||
g_DutyCycle = 0;
|
||||
b_DutyCycle = 0;
|
||||
if (r_DutyCycle == MAXDUTY)
|
||||
direction++;
|
||||
break;
|
||||
case 1:
|
||||
r_DutyCycle--;
|
||||
g_DutyCycle = 0;
|
||||
b_DutyCycle = 0;
|
||||
if (r_DutyCycle == MINDUTY)
|
||||
direction++;
|
||||
break;
|
||||
case 2:
|
||||
r_DutyCycle = 0;
|
||||
g_DutyCycle++;
|
||||
b_DutyCycle = 0;
|
||||
if (g_DutyCycle == MAXDUTY)
|
||||
direction++;
|
||||
break;
|
||||
case 3:
|
||||
r_DutyCycle = 0;
|
||||
g_DutyCycle--;
|
||||
b_DutyCycle = 0;
|
||||
if (g_DutyCycle == MINDUTY)
|
||||
direction++;
|
||||
break;
|
||||
case 4:
|
||||
r_DutyCycle = 0;
|
||||
g_DutyCycle = 0;
|
||||
b_DutyCycle++;
|
||||
if (b_DutyCycle == MAXDUTY)
|
||||
direction++;
|
||||
break;
|
||||
case 5:
|
||||
r_DutyCycle = 0;
|
||||
g_DutyCycle = 0;
|
||||
b_DutyCycle--;
|
||||
if (b_DutyCycle == MINDUTY)
|
||||
direction = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
UpdateDisplay(); // 更新显示
|
||||
}
|
||||
|
||||
void Mode4(void) // RGB七彩跳动
|
||||
{
|
||||
switch (direction)
|
||||
{
|
||||
case 0:
|
||||
r_DutyCycle = MAXDUTY;
|
||||
g_DutyCycle = MINDUTY;
|
||||
b_DutyCycle = MINDUTY;
|
||||
break;
|
||||
case 2:
|
||||
r_DutyCycle = MINDUTY;
|
||||
g_DutyCycle = MAXDUTY;
|
||||
b_DutyCycle = MINDUTY;
|
||||
break;
|
||||
case 4:
|
||||
r_DutyCycle = MINDUTY;
|
||||
g_DutyCycle = MINDUTY;
|
||||
b_DutyCycle = MAXDUTY;
|
||||
break;
|
||||
case 6:
|
||||
r_DutyCycle = MAXDUTY;
|
||||
g_DutyCycle = MAXDUTY;
|
||||
b_DutyCycle = MINDUTY;
|
||||
break;
|
||||
case 8:
|
||||
r_DutyCycle = MAXDUTY;
|
||||
g_DutyCycle = MINDUTY;
|
||||
b_DutyCycle = MAXDUTY;
|
||||
break;
|
||||
case 10:
|
||||
r_DutyCycle = MINDUTY;
|
||||
g_DutyCycle = MAXDUTY;
|
||||
b_DutyCycle = MAXDUTY;
|
||||
break;
|
||||
case 12:
|
||||
r_DutyCycle = MAXDUTY;
|
||||
g_DutyCycle = MAXDUTY;
|
||||
b_DutyCycle = MAXDUTY;
|
||||
break;
|
||||
default:
|
||||
r_DutyCycle = MINDUTY;
|
||||
g_DutyCycle = MINDUTY;
|
||||
b_DutyCycle = MINDUTY;
|
||||
break;
|
||||
}
|
||||
direction++;
|
||||
if (direction == 14)
|
||||
direction = 0;
|
||||
UpdateDisplay(); // 更新显示
|
||||
}
|
||||
void Mode5(void) // RGB跳动
|
||||
{
|
||||
switch (direction)
|
||||
{
|
||||
case 0:
|
||||
r_DutyCycle = MAXDUTY;
|
||||
g_DutyCycle = MINDUTY;
|
||||
b_DutyCycle = MINDUTY;
|
||||
break;
|
||||
case 2:
|
||||
r_DutyCycle = MINDUTY;
|
||||
g_DutyCycle = MAXDUTY;
|
||||
b_DutyCycle = MINDUTY;
|
||||
break;
|
||||
case 4:
|
||||
r_DutyCycle = MINDUTY;
|
||||
g_DutyCycle = MINDUTY;
|
||||
b_DutyCycle = MAXDUTY;
|
||||
break;
|
||||
default:
|
||||
r_DutyCycle = MINDUTY;
|
||||
g_DutyCycle = MINDUTY;
|
||||
b_DutyCycle = MINDUTY;
|
||||
break;
|
||||
}
|
||||
direction++;
|
||||
if (direction == 6)
|
||||
direction = 0;
|
||||
UpdateDisplay(); // 更新显示
|
||||
}
|
||||
void Mode6(void)//R闪动
|
||||
{
|
||||
if (!direction)
|
||||
{
|
||||
r_DutyCycle = MAXDUTY;
|
||||
g_DutyCycle = MINDUTY;
|
||||
b_DutyCycle = MINDUTY;
|
||||
direction = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
r_DutyCycle = MINDUTY;
|
||||
g_DutyCycle = MINDUTY;
|
||||
b_DutyCycle = MINDUTY;
|
||||
direction = 0;
|
||||
}
|
||||
|
||||
UpdateDisplay();//更新显示
|
||||
}
|
||||
void Mode7(void)//G闪动
|
||||
{
|
||||
if (!direction)
|
||||
{
|
||||
r_DutyCycle = MINDUTY;
|
||||
g_DutyCycle = MAXDUTY;
|
||||
b_DutyCycle = MINDUTY;
|
||||
direction = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
r_DutyCycle = MINDUTY;
|
||||
g_DutyCycle = MINDUTY;
|
||||
b_DutyCycle = MINDUTY;
|
||||
direction = 0;
|
||||
}
|
||||
|
||||
UpdateDisplay();//更新显示
|
||||
}
|
||||
void Mode8(void)//B闪动
|
||||
{
|
||||
if (!direction)
|
||||
{
|
||||
r_DutyCycle = MINDUTY;
|
||||
g_DutyCycle = MINDUTY;
|
||||
b_DutyCycle = MAXDUTY;
|
||||
direction = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
r_DutyCycle = MINDUTY;
|
||||
g_DutyCycle = MINDUTY;
|
||||
b_DutyCycle = MINDUTY;
|
||||
direction = 0;
|
||||
}
|
||||
|
||||
UpdateDisplay();//更新显示
|
||||
}
|
||||
void Mode9(void)//W 闪动
|
||||
{
|
||||
if (!direction)
|
||||
{
|
||||
direction = 1;
|
||||
r_DutyCycle = MAXDUTY;
|
||||
g_DutyCycle = MAXDUTY;
|
||||
b_DutyCycle = MAXDUTY;
|
||||
}
|
||||
else
|
||||
{
|
||||
direction = 0;
|
||||
r_DutyCycle = MINDUTY;
|
||||
g_DutyCycle = MINDUTY;
|
||||
b_DutyCycle = MINDUTY;
|
||||
}
|
||||
|
||||
UpdateDisplay();//更新显示
|
||||
}
|
||||
void Mode10(void)//W 频闪
|
||||
{
|
||||
r_DutyCycle = MAXDUTY;
|
||||
g_DutyCycle = MAXDUTY;
|
||||
b_DutyCycle = MAXDUTY;
|
||||
|
||||
UpdateDisplay();//更新显示
|
||||
startTimer(&timer2, 50); // 重新启动定时器2,设定间隔为100ms
|
||||
}
|
||||
void Mode11(void)//R 闪动
|
||||
{
|
||||
if (!direction)
|
||||
{
|
||||
direction = 1;
|
||||
r_DutyCycle = MAXDUTY;
|
||||
g_DutyCycle = MINDUTY;
|
||||
b_DutyCycle = MINDUTY;
|
||||
}
|
||||
else
|
||||
{
|
||||
direction = 0;
|
||||
r_DutyCycle = MINDUTY;
|
||||
g_DutyCycle = MINDUTY;
|
||||
b_DutyCycle = MINDUTY;
|
||||
}
|
||||
|
||||
UpdateDisplay();//更新显示
|
||||
}
|
||||
void Mode12(void)//R 频闪
|
||||
{
|
||||
r_DutyCycle = MAXDUTY;
|
||||
g_DutyCycle = MINDUTY;
|
||||
b_DutyCycle = MINDUTY;
|
||||
|
||||
UpdateDisplay();//更新显示
|
||||
startTimer(&timer2, 50); // 重新启动定时器2,设定间隔为100ms
|
||||
}
|
||||
void Mode13(void)//G 闪动
|
||||
{
|
||||
if (!direction)
|
||||
{
|
||||
direction = 1;
|
||||
r_DutyCycle = MINDUTY;
|
||||
g_DutyCycle = MAXDUTY;
|
||||
b_DutyCycle = MINDUTY;
|
||||
}
|
||||
else
|
||||
{
|
||||
direction = 0;
|
||||
r_DutyCycle = MINDUTY;
|
||||
g_DutyCycle = MINDUTY;
|
||||
b_DutyCycle = MINDUTY;
|
||||
}
|
||||
|
||||
UpdateDisplay();//更新显示
|
||||
}
|
||||
void Mode14(void)//G 频闪
|
||||
{
|
||||
r_DutyCycle = MINDUTY;
|
||||
g_DutyCycle = MAXDUTY;
|
||||
b_DutyCycle = MINDUTY;
|
||||
|
||||
UpdateDisplay();//更新显示
|
||||
startTimer(&timer2, 50); // 重新启动定时器2,设定间隔为100ms
|
||||
}
|
||||
void Mode15(void)//B 闪动
|
||||
{
|
||||
if (!direction)
|
||||
{
|
||||
direction = 1;
|
||||
r_DutyCycle = MINDUTY;
|
||||
g_DutyCycle = MINDUTY;
|
||||
b_DutyCycle = MAXDUTY;
|
||||
}
|
||||
else
|
||||
{
|
||||
direction = 0;
|
||||
r_DutyCycle = MINDUTY;
|
||||
g_DutyCycle = MINDUTY;
|
||||
b_DutyCycle = MINDUTY;
|
||||
}
|
||||
|
||||
UpdateDisplay();//更新显示
|
||||
}
|
||||
void Mode16(void)//B 频闪
|
||||
{
|
||||
r_DutyCycle = MINDUTY;
|
||||
g_DutyCycle = MINDUTY;
|
||||
b_DutyCycle = MAXDUTY;
|
||||
|
||||
UpdateDisplay();//更新显示
|
||||
startTimer(&timer2, 50); // 重新启动定时器2,设定间隔为100ms
|
||||
}
|
||||
void Mode17(void)//Y 闪动
|
||||
{
|
||||
if (direction)
|
||||
{
|
||||
direction = 0;
|
||||
r_DutyCycle = MAXDUTY;
|
||||
g_DutyCycle = MAXDUTY;
|
||||
b_DutyCycle = MINDUTY;
|
||||
}
|
||||
else
|
||||
{
|
||||
direction = 1;
|
||||
r_DutyCycle = MINDUTY;
|
||||
g_DutyCycle = MINDUTY;
|
||||
b_DutyCycle = MINDUTY;
|
||||
}
|
||||
|
||||
UpdateDisplay();//更新显示
|
||||
}
|
||||
void Mode18(void)//Y 频闪
|
||||
{
|
||||
r_DutyCycle = MAXDUTY;
|
||||
g_DutyCycle = MAXDUTY;
|
||||
b_DutyCycle = MINDUTY;
|
||||
|
||||
UpdateDisplay();//更新显示
|
||||
startTimer(&timer2, 50); // 重新启动定时器2,设定间隔为100ms
|
||||
}
|
||||
|
||||
void Mode19(void)//0-18 模式循环
|
||||
{
|
||||
MODE19_i = 0;
|
||||
modefunctin[MODE19_i]();
|
||||
}
|
||||
pfunc modefunctin[] =//模式切换,一共15个模式
|
||||
{
|
||||
Mode0, Mode1, Mode2, Mode3, Mode4, Mode5, Mode6, Mode7, Mode8, Mode9, Mode10, Mode11, Mode12, Mode13, Mode14, Mode15, Mode16, Mode17, Mode18, Mode19
|
||||
};
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,174 @@
|
||||
#ifndef _RGBLIGHT_H_
|
||||
#define _RGBLIGHT_H_
|
||||
|
||||
|
||||
/*-----------------------------------------------------------------------------------
|
||||
INCLUDE HEADE FILES
|
||||
------------------------------------------------------------------------------------*/
|
||||
#include <stdint.h>
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Macros
|
||||
-------------------------------------------------------------------------------------*/
|
||||
#define MINDUTY 0
|
||||
#define MAXDUTY 255
|
||||
|
||||
//#define ON 0X00
|
||||
//#define AUTO 0X01
|
||||
//#define OFF 0X02
|
||||
//#define MUSIC1 0X03
|
||||
//#define MUSIC2 0X04
|
||||
//#define MUSIC3 0X05
|
||||
//#define TIMER1 0X06
|
||||
//#define TIMER2 0X07
|
||||
//#define TIMER3 0X08
|
||||
//#define SPEED_IN 0X09
|
||||
//#define SPEED_RE 0X0A
|
||||
//#define MODE_IN 0X0B
|
||||
//#define MODE_RE 0X0C
|
||||
//#define BRIGHTNESS_IN 0X0D
|
||||
//#define BRIGHTNESS_RE 0X0F
|
||||
//#define RED 0X10
|
||||
//#define GREED 0X11
|
||||
//#define BLUE 0X12
|
||||
//#define YELLOW 0X13
|
||||
//#define CYAN 0X14
|
||||
//#define BLUISH 0X15
|
||||
//#define PINK 0X16
|
||||
//#define PURPLE 0X17
|
||||
//#define WHITE 0X17
|
||||
#define ON 0x25
|
||||
#define AUTO 0x2D
|
||||
#define OFF 0xA4
|
||||
|
||||
#define BRIGHTNESS_IN 0x0B
|
||||
#define BRIGHTNESS_RE 0x5B
|
||||
|
||||
#define SPEED_IN 0x0A
|
||||
#define SPEED_RE 0x5C
|
||||
|
||||
#define MODE_IN 0x0F
|
||||
#define MODE_RE 0x6E
|
||||
|
||||
#define RED 0x06
|
||||
#define GREED 0x08
|
||||
#define BLUE 0x5A
|
||||
|
||||
#define YELLOW 0x09
|
||||
#define CYAN 0x8A
|
||||
#define BLUISH 0x10
|
||||
|
||||
#define TIMER1H 0x1C
|
||||
#define WHITE 0x52
|
||||
#define TIMER2H 0x53
|
||||
|
||||
#define MUSIC1 0x0C
|
||||
#define MUSIC2 0x1A
|
||||
#define MUSIC3 0x1F
|
||||
|
||||
#define FLASH1 0x01
|
||||
#define FLASH2 0x00
|
||||
#define FLASH3 0x02
|
||||
/*------------------------------------------------------------------------------------
|
||||
TypeDef
|
||||
-------------------------------------------------------------------------------------*/
|
||||
// // 定义RGB颜色结构体
|
||||
//typedef struct {
|
||||
// uint8_t r; // 红色通道
|
||||
// uint8_t g; // 绿色通道
|
||||
// uint8_t b; // 蓝色通道
|
||||
//} RGBColor;
|
||||
|
||||
typedef struct BLE_DATA_MSG
|
||||
{
|
||||
uint8_t tpye;
|
||||
uint8_t r_value;
|
||||
uint8_t g_value;
|
||||
uint8_t b_value_mode_speed_brightness;
|
||||
}ble_data_msg;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint32_t DutyCycleAcc;
|
||||
uint32_t DutyCycle;
|
||||
} PWM_DutyCycle_t;
|
||||
|
||||
typedef void (*pfunc)(void);
|
||||
|
||||
|
||||
enum
|
||||
{
|
||||
MODE0,
|
||||
MODE1,
|
||||
MODE2,
|
||||
MODE3,
|
||||
MODE4,
|
||||
MODE5,
|
||||
MODE6,
|
||||
MODE7,
|
||||
MODE8,
|
||||
MODE9,
|
||||
MODE10,
|
||||
MODE11,
|
||||
MODE12,
|
||||
MODE13,
|
||||
MODE14,
|
||||
MODE15,
|
||||
MODE16,
|
||||
MODE17,
|
||||
MODE18,
|
||||
MODE19,
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
STATICEFFECT,//色环+静态
|
||||
DYNAMICEEFECT//动态
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
TEMPERATUREMODE,//色环模式
|
||||
DYNAMICMODE //动态+静态模式
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
POWERON,
|
||||
POWEROFF
|
||||
};
|
||||
|
||||
extern pfunc modefunctin[];
|
||||
extern uint8_t refreshRfFlag;
|
||||
extern uint8_t MatchOverFlag;//上电定时5S结束标志
|
||||
extern uint8_t MODE19_i;
|
||||
|
||||
extern uint32_t r_DutyCycle;
|
||||
extern uint32_t g_DutyCycle;
|
||||
extern uint32_t b_DutyCycle;
|
||||
extern uint8_t Brightness;
|
||||
|
||||
extern uint8_t CurrentStatus;
|
||||
extern uint8_t CurrentModel;
|
||||
extern uint8_t mode;
|
||||
extern uint8_t FadeSpeed;
|
||||
extern uint16_t speedOption[10];
|
||||
extern uint8_t TimeSpeed;
|
||||
extern uint8_t MODE19_i;
|
||||
|
||||
extern uint8_t only_read_charactertics_buffer[];
|
||||
|
||||
void TemperatureAdjustment(unsigned char value);
|
||||
void rgbColorModel(uint8_t value, uint32_t *r_DutyCycle, uint32_t *g_DutyCycle, uint32_t *b_DutyCycle);
|
||||
void functionOption(uint8_t key_value);
|
||||
void UpdateDisplay(void);
|
||||
void PWM_On(unsigned char on, unsigned char PWM_CHINAEL);
|
||||
void PWM_Off(unsigned char off, unsigned char PWM_CHINAEL);
|
||||
void updateParameter(void);
|
||||
void updateParameterMode19(unsigned char mode);
|
||||
void key_message_process(uint16_t msg);
|
||||
void ir_message_process(void);
|
||||
void ble_message_process(void);
|
||||
void mapAudioToRGB(uint16_t audioValue) ;
|
||||
void ble_callback(uint8_t value0,uint8_t value1,uint8_t value2,uint8_t value3);
|
||||
#endif
|
||||
@@ -0,0 +1,262 @@
|
||||
#<SYMDEFS># ARM Linker, 5060750: Last Updated: Tue Sep 05 15:30:26 2023
|
||||
0x10000808 D co_default_bdaddr
|
||||
0x00004169 T ke_msg_alloc
|
||||
0x000041ed T ke_msg_send
|
||||
0x00004225 T ke_msg_send_basic
|
||||
0x000042e9 T ke_state_set
|
||||
0x00004359 T ke_task_create
|
||||
0x000042b9 T ke_state_get
|
||||
0x000041af T ke_msg_discard
|
||||
0x000041b3 T ke_msg_forward
|
||||
0x000041dd T ke_msg_in_queue
|
||||
0x00004233 T ke_msg_src_id_get
|
||||
0x00003e05 T ke_free
|
||||
0x000041d5 T ke_msg_free
|
||||
0x00003c21 T ke_check_malloc
|
||||
0x0000dbf5 T rwip_init
|
||||
0x0000de79 T rwip_schedule
|
||||
0x10000938 D rwip_rf
|
||||
0x00000df9 T BLE_Handler
|
||||
0x0000238d T co_buf_alloc
|
||||
0x000024fd T co_buf_copy_data_from_mem
|
||||
0x00002721 T co_buf_release
|
||||
0x000028c9 T co_djob_prepare
|
||||
0x000028d5 T co_djob_reg
|
||||
0x0000291d T co_djob_unreg
|
||||
0x00002969 T co_list_extract
|
||||
0x000029ad T co_list_extract_after
|
||||
0x00002ac5 T co_list_pop_front
|
||||
0x00002ae9 T co_list_push_back
|
||||
0x00002b39 T co_list_push_front
|
||||
0x00002b55 T co_time_get
|
||||
0x00002ce5 T co_time_timer_init
|
||||
0x00002dcd T co_time_timer_set
|
||||
0x00002df9 T co_time_timer_stop
|
||||
0x00000e95 T aes_c1
|
||||
0x00001465 T aes_encrypt
|
||||
0x000014cd T aes_f4
|
||||
0x00001521 T aes_f5
|
||||
0x00001641 T aes_f6
|
||||
0x000016bd T aes_g2
|
||||
0x00001c35 T aes_rand
|
||||
0x000012a1 T aes_cmac
|
||||
0x000025b1 T co_buf_head_release
|
||||
0x000025dd T co_buf_head_reserve
|
||||
0x00002ec5 T co_util_pack
|
||||
0x000030d5 T co_util_unpack
|
||||
0x0000ddd9 T rwip_reset
|
||||
0x00001da5 T aes_rpa_resolve
|
||||
0x00002799 T co_buf_reuse
|
||||
0x000027dd T co_buf_size
|
||||
0x00002489 T co_buf_copy
|
||||
0x00002569 T co_buf_duplicate
|
||||
0x000027ed T co_buf_tail_release
|
||||
0x00002a0d T co_list_init
|
||||
0x00002285 T ble_util_buf_rx_free
|
||||
0x00001f69 T ble_util_buf_acl_tx_alloc
|
||||
0x00002439 T co_buf_cb_free_set
|
||||
0x00003fad T ke_malloc
|
||||
0x00002a25 T co_list_insert_after
|
||||
0x0000459d T ke_timer_active
|
||||
0x000045ad T ke_timer_clear
|
||||
0x00004641 T ke_timer_set
|
||||
0x00002369 T co_buf_acquire
|
||||
0x00002819 T co_buf_tail_reserve
|
||||
0x00002531 T co_buf_copy_data_to_mem
|
||||
0x00002a55 T co_list_insert_before
|
||||
0x10000e90 D rom_env
|
||||
0x1000096c D rwip_param
|
||||
0x0000fe8d D one_bits
|
||||
0x000039bd T hci_rd_rem_ver_info_cmd_handler
|
||||
0x00003445 T hci_le_con_upd_cmd_handler
|
||||
0x00003705 T hci_le_rd_chnl_map_cmd_handler
|
||||
0x00003761 T hci_le_rd_rem_feats_cmd_handler
|
||||
0x0000354d T hci_le_en_enc_cmd_handler
|
||||
0x0000369d T hci_le_ltk_req_reply_cmd_handler
|
||||
0x0000360d T hci_le_ltk_req_neg_reply_cmd_handler
|
||||
0x00003851 T hci_le_rem_con_param_req_reply_cmd_handler
|
||||
0x000037f9 T hci_le_rem_con_param_req_neg_reply_cmd_handler
|
||||
0x000038d9 T hci_le_set_data_len_cmd_handler
|
||||
0x00003be5 T hci_vs_set_pref_slave_latency_cmd_handler
|
||||
0x00003b9d T hci_vs_set_pref_slave_evt_dur_cmd_handler
|
||||
0x00003ab9 T hci_vs_set_max_rx_size_and_time_cmd_handler
|
||||
0x00003a39 T hci_rd_rssi_cmd_handler
|
||||
0x0000d749 T llm_ch_map_update_ind_handler
|
||||
0x0000650d T llc_loc_llcp_rsp_to_handler
|
||||
0x00007161 T llc_rem_llcp_rsp_to_handler
|
||||
0x00005255 T llc_encrypt_ind_handler
|
||||
0x00006739 T llc_op_ver_exch_ind_handler
|
||||
0x000066d5 T llc_op_feats_exch_ind_handler
|
||||
0x00006675 T llc_op_encrypt_ind_handler
|
||||
0x00006609 T llc_op_dl_upd_ind_handler
|
||||
0x0000657d T llc_op_con_upd_ind_handler
|
||||
0x00006525 T llc_op_ch_map_upd_ind_handler
|
||||
0x0000bda9 T lld_llcp_rx_ind_handler
|
||||
0x0000bf1d T lld_llcp_tx_cfm_handler
|
||||
0x00007551 T lld_acl_rx_ind_handler
|
||||
0x000075dd T lld_acl_tx_cfm_handler
|
||||
0x00009509 T lld_con_param_upd_cfm_handler
|
||||
0x00008921 T lld_ch_map_upd_cfm_handler
|
||||
0x000094cd T lld_con_offset_upd_ind_handler
|
||||
0x00003435 T hci_command_llc_handler
|
||||
0x00003385 T hci_acl_data_handler
|
||||
0x00003cc1 T ke_event_callback_set
|
||||
0x00003cd9 T ke_event_clear
|
||||
0x00003db1 T ke_event_set
|
||||
0x000022e5 T ble_util_nb_good_channels
|
||||
0x0000230d T ble_util_pkt_dur_in_us
|
||||
0x0000234d T co_bdaddr_compare
|
||||
0x000088bd T lld_ch_assess_data_get
|
||||
0x000088c5 T lld_ch_map_set
|
||||
0x0000c16d T lld_read_clock
|
||||
0x0000c30d T lld_res_list_peer_update
|
||||
0x0000d60d T lld_white_list_add
|
||||
0x0000dd99 T rwip_prevent_sleep_clear
|
||||
0x0000ddb9 T rwip_prevent_sleep_set
|
||||
0x0000f071 T sch_plan_rem
|
||||
0x00001ce5 T aes_rpa_gen
|
||||
0x00002029 T ble_util_buf_adv_tx_alloc
|
||||
0x00002061 T ble_util_buf_adv_tx_free
|
||||
0x0000feae D co_null_bdaddr
|
||||
0x0000feb4 D co_null_key
|
||||
0x000050c9 T llc_con_move_cbk
|
||||
0x000071d9 T llc_start
|
||||
0x00007669 T lld_adv_adv_data_update
|
||||
0x00007ff5 T lld_adv_rand_addr_update
|
||||
0x00008071 T lld_adv_restart
|
||||
0x0000817d T lld_adv_scan_rsp_data_update
|
||||
0x000081c5 T lld_adv_start
|
||||
0x00008831 T lld_adv_stop
|
||||
0x0000d6c1 T lld_white_list_rem
|
||||
0x0000b401 T lld_init_rand_addr_update
|
||||
0x0000c179 T lld_res_list_add
|
||||
0x0000c251 T lld_res_list_clear
|
||||
0x0000c27d T lld_res_list_local_rpa_get
|
||||
0x0000c2c5 T lld_res_list_peer_rpa_get
|
||||
0x0000c341 T lld_res_list_priv_mode_update
|
||||
0x0000c37d T lld_res_list_rem
|
||||
0x0000cedd T lld_scan_rand_addr_update
|
||||
0x0000b699 T lld_init_start
|
||||
0x0000bc9d T lld_init_stop
|
||||
0x0000f081 T sch_plan_req
|
||||
0x0000f0d5 T sch_plan_set
|
||||
0x0000fec4 D co_rate_to_phy
|
||||
0x0000cb81 T lld_scan_params_update
|
||||
0x0000d115 T lld_scan_start
|
||||
0x0000d5c5 T lld_scan_stop
|
||||
0x0000c3ad T lld_rpa_renew
|
||||
0x0000408d T ke_mem_init
|
||||
0x00002609 T co_buf_init
|
||||
0x0000de9d T rwip_sleep
|
||||
0x10000810 D em_ble_base_address_table_0
|
||||
0x10000812 D em_ble_base_address_table_1
|
||||
0x10000814 D em_ble_base_address_table_2
|
||||
0x10000816 D em_ble_base_address_table_3
|
||||
0x10000818 D em_ble_base_address_table_4
|
||||
0x1000081a D em_ble_base_address_table_5
|
||||
0x10000822 D em_ble_base_address_table_6
|
||||
0x1000081c D em_ble_base_address_table_7
|
||||
0x10000824 D em_ble_base_address_table_8
|
||||
0x1000081e D em_ble_base_address_table_9
|
||||
0x10000820 D em_ble_base_address_table_10
|
||||
0x000021d9 T ble_util_buf_init_env
|
||||
0x10000978 D PATCH_FUN
|
||||
0x1000108c D lld_adv_env
|
||||
0x0000ebe5 T sch_arb_remove
|
||||
0x0000f739 T sch_slice_fg_remove
|
||||
0x10000f44 D llc_env
|
||||
0x0000693d T llc_proc_err_ind
|
||||
0x000073c1 T llc_stop
|
||||
0x00004695 T ll_channel_map_ind_handler
|
||||
0x0000471d T ll_connection_param_req_handler
|
||||
0x00004809 T ll_connection_param_rsp_handler
|
||||
0x0000489d T ll_connection_update_ind_handler
|
||||
0x000049c1 T ll_enc_req_handler
|
||||
0x00004a85 T ll_enc_rsp_handler
|
||||
0x00004af9 T ll_feature_req_handler
|
||||
0x00004b4d T ll_feature_rsp_handler
|
||||
0x00004ba1 T ll_length_req_handler
|
||||
0x00004bf9 T ll_length_rsp_handler
|
||||
0x00004c75 T ll_min_used_channels_ind_handler
|
||||
0x00004cf1 T ll_pause_enc_req_handler
|
||||
0x00004d5d T ll_pause_enc_rsp_handler
|
||||
0x00004db5 T ll_reject_ext_ind_handler
|
||||
0x00004dd5 T ll_reject_ind_handler
|
||||
0x00004df5 T ll_slave_feature_req_handler
|
||||
0x00004e49 T ll_start_enc_req_handler
|
||||
0x00004e99 T ll_start_enc_rsp_handler
|
||||
0x00004ee9 T ll_unknown_rsp_handler
|
||||
0x00004ef9 T ll_version_ind_handler
|
||||
0x00001fd9 T ble_util_buf_acl_tx_free
|
||||
0x0000c5c1 T lld_rxdesc_check
|
||||
0x0000c609 T lld_rxdesc_free
|
||||
0x0000fee4 D rwip_priority
|
||||
0x0000e8b1 T sch_arb_insert
|
||||
0x0000f355 T sch_prog_push
|
||||
0x0000fde5 T FMC_SPI_Flash_RDID
|
||||
0x0000fd8d T FMC_SPI_Flash_RUID
|
||||
0x0000fa71 T FMC_SPI_Flash_WakeUp
|
||||
0x0000f9f1 T FMC_SPI_Init_Oprt
|
||||
0x0000fa49 T FMC_SPI_Flash_PowerDown
|
||||
0x0000fceb T FMC_SPI_FlashRead
|
||||
0x0000fc1f T FMC_SPI_FlashWrite
|
||||
0x0000fb09 T FMC_SPI_Flash_Erase_Sector
|
||||
0x00004fc9 T llc_cleanup
|
||||
0x00005091 T llc_cmd_stat_send
|
||||
0x00005a39 T llc_llcp_send
|
||||
0x00005ac9 T llc_llcp_state_set
|
||||
0x00006981 T llc_proc_get
|
||||
0x00006999 T llc_proc_id_get
|
||||
0x000069b5 T llc_proc_init
|
||||
0x000069c1 T llc_proc_reg
|
||||
0x00006a05 T llc_proc_state_get
|
||||
0x00006a09 T llc_proc_state_set
|
||||
0x00006a0d T llc_proc_timer_pause_set
|
||||
0x00006a7d T llc_proc_timer_set
|
||||
0x00006ae5 T llc_proc_unreg
|
||||
0x0000a1c1 T lld_con_stop
|
||||
0x00007869 T lld_adv_evt_start_cbk
|
||||
0x10000e68 D rwip_env
|
||||
0x1000080e D rwip_prog_delay
|
||||
0x0000e041 T rwip_time_get
|
||||
0x0000e2cd T rwip_wakeup_end
|
||||
0x1000112c D sch_arb_env
|
||||
0x00007905 T lld_adv_frm_cbk
|
||||
0x0000e0b1 T rwip_timer_alarm_handler
|
||||
0x0000e11d T rwip_timer_arb_handler
|
||||
0x0000e189 T rwip_timer_co_handler
|
||||
0x10000f94 D lld_env
|
||||
0x10000828 D aa_gen
|
||||
0x00007c25 T lld_adv_init
|
||||
0x00009301 T lld_con_init
|
||||
0x0000a7f1 T lld_core_init
|
||||
0x1000082c D lld_rpa_renew_env
|
||||
0x00008959 T lld_channel_assess
|
||||
0x100010dc D lld_con_env
|
||||
0x0000a4ad T lld_con_tx_len_update
|
||||
0x10000830 D lld_exp_sync_pos_tab
|
||||
0x0000bce5 T lld_instant_proc_end
|
||||
0x11010c9d T prf_dst_task_get
|
||||
0x11010dd1 T rom_env_init
|
||||
0x110035c5 T gapc_get_bdaddr
|
||||
0x11009261 T gatt_db_svc16_add
|
||||
0x11009411 T gatt_db_svc_add
|
||||
0x11009955 T gatt_db_svc_remove
|
||||
0x1100a445 T gatt_srv_att_read_get_cfm
|
||||
0x1100a57d T gatt_srv_att_val_set_cfm
|
||||
0x1100b0d1 T gatt_srv_event_send
|
||||
0x1100bfe1 T gatt_user_srv_register
|
||||
0x11011ddc D llc_msg_handler_tab
|
||||
0x10001698 D rom_llc_state
|
||||
0x00008e4d T lld_con_evt_start_cbk
|
||||
0x00008ddd T lld_con_evt_canceled_cbk
|
||||
0x0000fe9e D co_sca2ppm
|
||||
0x00009051 T lld_con_evt_time_update
|
||||
0x00009415 T lld_con_max_lat_calc
|
||||
0x00009a69 T lld_con_sched
|
||||
0x0000f7e1 T sch_slice_per_add
|
||||
0x0000d801 T rwble_isr
|
||||
0x0000dc75 T rwip_isr
|
||||
0x00009189 T lld_con_frm_isr
|
||||
0x000044f9 T ke_task_schedule
|
||||
0x00007949 T lld_adv_frm_isr
|
||||
@@ -0,0 +1,331 @@
|
||||
/**
|
||||
****************************************************************************************
|
||||
*
|
||||
* @file arch_main.c
|
||||
*
|
||||
* @brief Main loop of the application.
|
||||
*
|
||||
* Copyright (C) RivieraWaves 2009-2015
|
||||
*
|
||||
*
|
||||
****************************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* INCLUDES
|
||||
****************************************************************************************
|
||||
*/
|
||||
|
||||
#include "rwip_config.h" // RW SW configuration
|
||||
|
||||
#include "arch.h" // architectural platform definitions
|
||||
#include <stdlib.h> // standard lib functions
|
||||
#include <stddef.h> // standard definitions
|
||||
#include <stdint.h> // standard integer definition
|
||||
#include <stdbool.h> // boolean definition
|
||||
#include "boot.h" // boot definition
|
||||
#include "rwip.h" // RW SW initialization
|
||||
#include "xc_drv_pwr.h"
|
||||
|
||||
#if (BLE_TEST_MODE_SUPPORT)
|
||||
#include "uart.h" // UART initialization
|
||||
#endif // (BLE_TEST_MODE_SUPPORT)
|
||||
|
||||
#if (BLE_EMB_PRESENT || BT_EMB_PRESENT)
|
||||
#include "rf.h" // RF initialization
|
||||
#endif // BLE_EMB_PRESENT || BT_EMB_PRESENT
|
||||
|
||||
#if (BLE_APP_PRESENT)
|
||||
//#include "app.h" // application functions
|
||||
#endif // BLE_APP_PRESENT
|
||||
|
||||
#if PLF_DMA
|
||||
#include "dma.h" // DMA initialization
|
||||
#endif // PLF_DMA
|
||||
|
||||
#if (PLF_NVDS)
|
||||
#include "nvds.h" // NVDS definitions
|
||||
#endif // PLF_NVDS
|
||||
|
||||
#include "reg_assert_mgr.h"
|
||||
#if (PLF_PROFILING || PLF_MEM_PROTECTION)
|
||||
#include "reg_sw_profiling.h"
|
||||
#endif // (PLF_PROFILING || PLF_MEM_PROTECTION)
|
||||
#include "platform.h"
|
||||
|
||||
#include "xc6xxx.h"
|
||||
|
||||
//CPU early wake-up time (unit:us)
|
||||
#define SLEEP_TIME_EARLY (3300)
|
||||
|
||||
#define HS_TO_US(frame) (((frame) * SLOT_SIZE) >> 1)
|
||||
|
||||
/**
|
||||
* @brief clock_init
|
||||
* @details
|
||||
* @param void
|
||||
* @retval void
|
||||
*/
|
||||
void clock_init(void)
|
||||
{
|
||||
CLOCK_InitCfg_t clock_cfg;
|
||||
|
||||
clock_cfg.hfclk_src = CLOCK_HFCLK_SRC_XTAL;
|
||||
clock_cfg.hfclk_in = CLOCK_HFCLK_IN_32M;
|
||||
clock_cfg.lfclk_src = CLOCK_LFCLK_SRC_RC;
|
||||
|
||||
// clock_cfg.lfclk_src = CLOCK_LFCLK_SRC_XTAL;
|
||||
if(clock_cfg.lfclk_src == CLOCK_LFCLK_SRC_XTAL) {
|
||||
clock_cfg.lfclk_in = CLOCK_LFCLK_IN_32768;
|
||||
} else if(clock_cfg.lfclk_src == CLOCK_LFCLK_SRC_RC) {
|
||||
clock_cfg.lfclk_in = CLOCK_LFCLK_IN_32K;
|
||||
}
|
||||
|
||||
xc_clock_init_cfg(&clock_cfg);
|
||||
|
||||
SysTick_Config(xc_clock_hfclk_in_get( ) / 100);
|
||||
SysTick->CTRL &= ~SysTick_CTRL_TICKINT_Msk;
|
||||
}
|
||||
|
||||
#if (SLEEP_ENABLE)
|
||||
|
||||
void system_sleep_init()
|
||||
{
|
||||
uint32_t wake_it_src;
|
||||
#if (USE_XIP == 1)
|
||||
xc_fmc_spi_init_oprt();
|
||||
#endif
|
||||
|
||||
#if 0
|
||||
#if (USE_XIP!=1)
|
||||
SPI_InitCfg_t spi_cfg = {0};
|
||||
spi_cfg.Mode = SPI_MODE_MASTER;
|
||||
spi_cfg.DataSize = SSI_CTRL0_DFS_LEN_8BIT;
|
||||
spi_cfg.Direction = SSI_CTRL0_TMOD_WR;
|
||||
spi_cfg.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2;
|
||||
spi_cfg.CLKPolarity = SSI_CTRL0_SCPOL_LOW;
|
||||
spi_cfg.CLKPhase = SPI_CPHA_LEAD;
|
||||
spi_cfg.FirstBit = SPI_FirstBit_MSB;
|
||||
|
||||
xc_spi_init(XC_SPI0, &spi_cfg);
|
||||
SPI_Flash_PowerDown(XC_SPI0);
|
||||
#endif
|
||||
#endif
|
||||
xc_pwr_gpio_sleep_config();
|
||||
|
||||
wake_it_src = GPIO_IRQn_WAKE | RTC_IRQn_WAKE|TIMER_AO0_IRQn_WAKE| TIMER0_IRQn_WAKE;
|
||||
|
||||
xc_pwr_wake_it_set(wake_it_src);
|
||||
}
|
||||
|
||||
void system_lightsleep_cfg()
|
||||
{
|
||||
#if (USE_XIP!=1)
|
||||
cprao_aon_puctrl1_set(0x4);/* puctrl1= 0x4 , SSI0RX must pulldown*/
|
||||
#endif
|
||||
cprao_aon_sys_time_set((RST_READY_TIME<<12) | (OSC32_STABLE_TIME));
|
||||
|
||||
xc_pwr_pd_lightsleep_set();
|
||||
xc_pwr_sleepsrc_mask_set(0x1e001e);
|
||||
xc_pwr_osc_off();
|
||||
}
|
||||
|
||||
void cpu_switch_16M()
|
||||
{
|
||||
//M0_FCLK
|
||||
cpr_m0_fclk_ctl__m0_fclk_div_p__setf(0x1);
|
||||
cpr_m0_fclk_ctl__m0_fclk_direct_sw__setf(0x1);
|
||||
|
||||
//CTL_PCLK
|
||||
cpr_ctl_pclk_grctl__ctl_pclk_gr__setf(0x8);
|
||||
cpr_ctl_pclk_grctl__ctl_pclk_gr_upd__setf(0x1);
|
||||
|
||||
cprao_aon_bbldo_adj_set(0x3c);
|
||||
/* The value needs to be configured to 7,
|
||||
otherwise the current drop will be slower during sleep
|
||||
and the clock accuracy of the rc32k will be affected.
|
||||
*/
|
||||
cprao_aon_lpoldo_adj_set(0x7);
|
||||
}
|
||||
|
||||
void sleep_init(void)
|
||||
{
|
||||
system_sleep_init();
|
||||
system_lightsleep_cfg();
|
||||
/* Timer for sleep-wake*/
|
||||
Timer_InitCfg_t timer_cfg;
|
||||
|
||||
timer_cfg.timer_src_clk = TIMER_CLK_SRC_32K;
|
||||
timer_cfg.timer_div_clk = TIMER_DIV_CLK_32000Hz;
|
||||
timer_cfg.timer_mode = TIMER_MODE_SINGLE;
|
||||
|
||||
xc_timer_init(TIMER0_IDX, &timer_cfg);
|
||||
//cpu 32M->16M
|
||||
// cpu_switch_16M();
|
||||
}
|
||||
|
||||
__RAM_CODE void xc_ble_sleep(void)
|
||||
{
|
||||
xc_adc_powerdown();
|
||||
xc_pwr_usb_off();
|
||||
xc_pwr_rc16m_off();
|
||||
|
||||
xc_pwr_rc32k_calib_off();
|
||||
|
||||
xc_pwr_opa_tempsensor_off();
|
||||
xc_pwr_opa_volr_off();
|
||||
xc_pwr_revddldo_off();
|
||||
|
||||
xc_pwr_dcdc_close();
|
||||
xc_pwr_rfdigital_off();
|
||||
xc_pwr_rc32k_calib_off();
|
||||
|
||||
xc_pwr_modem_off();
|
||||
xc_pwr_pd_lightsleep_set();
|
||||
|
||||
|
||||
#if (USE_XIP == 1)
|
||||
|
||||
#if (USE_ROM_FLASH)
|
||||
FMC_SPI_Flash_PowerDown();
|
||||
xc_pwr_rom_off();
|
||||
#else // (USE_ROM_FLASH)
|
||||
// xc_fmc_spi_flash_power_down();
|
||||
#endif // (USE_ROM_FLASH)
|
||||
|
||||
__NOP();
|
||||
__NOP();
|
||||
__NOP();
|
||||
__NOP();
|
||||
__NOP();
|
||||
__NOP();
|
||||
__NOP();
|
||||
__NOP();
|
||||
__NOP();
|
||||
__NOP();
|
||||
__NOP();
|
||||
__NOP();
|
||||
// cpr_fmc_ctl_set(0x3000 | (1 << 9)); // close FMC
|
||||
|
||||
for (int i = 0; i < 10; i++) {
|
||||
__NOP();
|
||||
__NOP();
|
||||
__NOP();
|
||||
}
|
||||
#endif
|
||||
|
||||
// __disable_irq();
|
||||
__NOP();
|
||||
__NOP();
|
||||
__NOP();
|
||||
__NOP();
|
||||
__NOP();
|
||||
__NOP();
|
||||
|
||||
__WFI();
|
||||
|
||||
__NOP();
|
||||
__NOP();
|
||||
__NOP();
|
||||
__NOP();
|
||||
__NOP();
|
||||
__NOP();
|
||||
__NOP();
|
||||
__NOP();
|
||||
__NOP();
|
||||
__NOP();
|
||||
__NOP();
|
||||
__NOP();
|
||||
|
||||
// cpr_fmc_ctl_set(0x3503);
|
||||
|
||||
__NOP();
|
||||
__NOP();
|
||||
__NOP();
|
||||
__NOP();
|
||||
__NOP();
|
||||
__NOP();
|
||||
__NOP();
|
||||
__NOP();
|
||||
__NOP();
|
||||
__NOP();
|
||||
__NOP();
|
||||
__NOP();
|
||||
|
||||
#if (USE_ROM_FLASH)
|
||||
xc_pwr_rom_on();
|
||||
FMC_SPI_Flash_WakeUp();
|
||||
#else // (USE_ROM_FLASH)
|
||||
// xc_fmc_spi_flash_wake_up();
|
||||
#endif // (USE_ROM_FLASH)
|
||||
|
||||
|
||||
xc_pwr_ao_timer_pclk32m_Set();
|
||||
|
||||
// __enable_irq();
|
||||
|
||||
#ifdef USED_DCDC
|
||||
PWR_DCDC_Open();
|
||||
#endif
|
||||
|
||||
xc_pwr_modem_on();
|
||||
|
||||
xc_pwr_rfdigital_on();
|
||||
|
||||
xc_adc_wakeup();
|
||||
}
|
||||
|
||||
void enter_cpu_sleep()
|
||||
{
|
||||
cpr_ctlapbclken_grctl__uart0_pclk_en__setf(0);
|
||||
cpr_ahbclken_grctl__dmas_hclk_en__setf(0);
|
||||
|
||||
cpr_slp_src_mask_set(0x1e000e);
|
||||
__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();
|
||||
__WFI();
|
||||
__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();
|
||||
cpr_slp_src_mask_set(0x1e001e);
|
||||
|
||||
// open uart clk
|
||||
cpr_ctlapbclken_grctl__uart0_pclk_en__setf(1);
|
||||
}
|
||||
|
||||
void sleep_schedule()
|
||||
{
|
||||
// Checks for sleep have to be done with interrupt disabled
|
||||
GLOBAL_INT_DISABLE();
|
||||
|
||||
// Check if the processor clock can be gated
|
||||
uint32_t duration = 0;
|
||||
uint32_t duration_timer = 0;
|
||||
switch(rwip_sleep(&duration, 2, \
|
||||
0x7D00, RWIP_MINIMUM_SLEEP_TIME)){
|
||||
case RWIP_DEEP_SLEEP:
|
||||
{
|
||||
delay_us(200);
|
||||
|
||||
duration_timer = (HS_TO_US(duration) - SLEEP_TIME_EARLY);
|
||||
xc_timer_set_value(TIMER0_IDX, duration_timer);
|
||||
xc_timer_start(TIMER0_IDX);
|
||||
|
||||
xc_ble_sleep();
|
||||
|
||||
xc_timer_stop(TIMER0_IDX);
|
||||
}
|
||||
// no break
|
||||
case RWIP_CPU_SLEEP:
|
||||
{
|
||||
enter_cpu_sleep();
|
||||
}
|
||||
break;
|
||||
case RWIP_ACTIVE:
|
||||
default:
|
||||
{
|
||||
// nothing to do.
|
||||
} break;
|
||||
}
|
||||
// Checks for sleep have to be done with interrupt disabled
|
||||
GLOBAL_INT_RESTORE();
|
||||
}
|
||||
#endif // (SLEEP_ENABLE)
|
||||
@@ -0,0 +1,244 @@
|
||||
|
||||
;/*****************************************************************************
|
||||
; * @file: startup_xinc.s
|
||||
; * @purpose: CMSIS Cortex-M0 Core Device Startup File for the
|
||||
; * Device xinc.
|
||||
; *****************************************************************************/
|
||||
|
||||
Stack_Size EQU 0x00000800
|
||||
|
||||
AREA STACK, NOINIT, READWRITE, ALIGN=3
|
||||
Stack_Mem SPACE Stack_Size
|
||||
__initial_sp
|
||||
|
||||
Heap_Size EQU 0x00000000
|
||||
|
||||
AREA HEAP, NOINIT, READWRITE, ALIGN=3
|
||||
__heap_base
|
||||
Heap_Mem SPACE Heap_Size
|
||||
__heap_limit
|
||||
|
||||
|
||||
PRESERVE8
|
||||
THUMB
|
||||
|
||||
; Vector Table Mapped to Address 0 at Reset
|
||||
|
||||
AREA RESET, DATA, READONLY
|
||||
EXPORT __Vectors
|
||||
EXPORT __Vectors_End
|
||||
EXPORT __Vectors_Size
|
||||
|
||||
__Vectors DCD __initial_sp ; Top of Stack
|
||||
DCD Reset_Handler ; Reset Handler
|
||||
DCD NMI_Handler ; NMI Handler
|
||||
DCD HardFault_Handler ; Hard Fault Handler
|
||||
DCD MemManage_Handler ; MPU Fault Handler
|
||||
DCD BusFault_Handler ; Bus Fault Handler
|
||||
DCD UsageFault_Handler ; Usage Fault Handler
|
||||
DCD 0 ; Reserved
|
||||
DCD 0 ; Reserved
|
||||
DCD 0 ; Reserved
|
||||
DCD 0 ; Reserved
|
||||
DCD SVC_Handler ; SVCall Handler
|
||||
DCD DebugMon_Handler ; Debug Monitor Handler
|
||||
DCD 0 ; Reserved
|
||||
DCD PendSV_Handler ; PendSV Handler
|
||||
DCD SysTick_Handler ; SysTick Handler
|
||||
|
||||
; External Interrupts
|
||||
; ToDo: Add here the vectors for the device specific external interrupts handler
|
||||
DCD BLE_Handler ; 0
|
||||
DCD DMA_Handler ; 1
|
||||
DCD CPR_Handler ; 2
|
||||
DCD GPIO_Handler ; 3
|
||||
DCD RTC_Handler ; 4
|
||||
DCD TIMER0_Handler ; 5
|
||||
DCD TIMER1_Handler ; 6
|
||||
DCD TIMER2_Handler ; 7
|
||||
DCD TIMER3_Handler ; 8
|
||||
DCD WDT_Handler ; 9
|
||||
DCD I2C_Handler ; 10
|
||||
DCD UART0_Handler ; 11
|
||||
DCD UART1_Handler ; 12
|
||||
DCD SPI0_Handler ; 13
|
||||
DCD SPI1_Handler ; 14
|
||||
DCD 0 ; 15
|
||||
DCD 0 ; 16
|
||||
DCD GADC_Handler ; 17
|
||||
DCD PWM_Handler ; 18
|
||||
DCD AES_Handler ; 19
|
||||
DCD USB_Handler ; 20
|
||||
DCD AUDIO_Handler ; 21
|
||||
DCD RF24G_Handler ; 22
|
||||
DCD SPI2_Handler ; 23
|
||||
DCD 0 ; 24
|
||||
DCD UART2_Handler ; 25
|
||||
DCD I2S_Handler ; 26
|
||||
DCD AOTIMER0_Handler ; 27
|
||||
DCD AOTIMER1_Handler ; 28
|
||||
DCD CMP_Handler ; 29
|
||||
DCD FMC_Handler ; 30
|
||||
DCD CAN_Handler ; 31
|
||||
|
||||
__Vectors_End
|
||||
|
||||
__Vectors_Size EQU __Vectors_End - __Vectors
|
||||
|
||||
|
||||
|
||||
AREA |.text|, CODE, READONLY
|
||||
; Reset Handler
|
||||
|
||||
Reset_Handler PROC
|
||||
|
||||
EXPORT Reset_Handler [WEAK]
|
||||
|
||||
IMPORT SystemInit
|
||||
IMPORT __main
|
||||
|
||||
LDR r0, =0x4000013C ; remap
|
||||
LDR r1, =0x10000001
|
||||
STR r1, [r0]
|
||||
|
||||
|
||||
|
||||
LDR R0, =SystemInit
|
||||
BLX R0
|
||||
|
||||
LDR R0, =__main
|
||||
BX R0
|
||||
|
||||
ENDP
|
||||
|
||||
; Dummy Exception Handlers (infinite loops which can be modified)
|
||||
NMI_Handler PROC
|
||||
EXPORT NMI_Handler [WEAK]
|
||||
B .
|
||||
ENDP
|
||||
|
||||
|
||||
HardFault_Handler\
|
||||
PROC
|
||||
EXPORT HardFault_Handler [WEAK]
|
||||
B .
|
||||
ENDP
|
||||
MemManage_Handler\
|
||||
PROC
|
||||
EXPORT MemManage_Handler [WEAK]
|
||||
B .
|
||||
ENDP
|
||||
BusFault_Handler\
|
||||
PROC
|
||||
EXPORT BusFault_Handler [WEAK]
|
||||
B .
|
||||
ENDP
|
||||
UsageFault_Handler\
|
||||
PROC
|
||||
EXPORT UsageFault_Handler [WEAK]
|
||||
B .
|
||||
ENDP
|
||||
SVC_Handler PROC
|
||||
EXPORT SVC_Handler [WEAK]
|
||||
B .
|
||||
ENDP
|
||||
DebugMon_Handler\
|
||||
PROC
|
||||
EXPORT DebugMon_Handler [WEAK]
|
||||
B .
|
||||
ENDP
|
||||
|
||||
Default_Handler PROC
|
||||
EXPORT BLE_Handler [WEAK]
|
||||
EXPORT DMA_Handler [WEAK]
|
||||
EXPORT CPR_Handler [WEAK]
|
||||
EXPORT GPIO_Handler [WEAK]
|
||||
EXPORT RTC_Handler [WEAK]
|
||||
EXPORT TIMER0_Handler [WEAK]
|
||||
EXPORT TIMER1_Handler [WEAK]
|
||||
EXPORT TIMER2_Handler [WEAK]
|
||||
EXPORT TIMER3_Handler [WEAK]
|
||||
EXPORT WDT_Handler [WEAK]
|
||||
EXPORT I2C_Handler [WEAK]
|
||||
EXPORT UART0_Handler [WEAK]
|
||||
EXPORT UART1_Handler [WEAK]
|
||||
EXPORT SPI0_Handler [WEAK]
|
||||
EXPORT SPI1_Handler [WEAK]
|
||||
;EXPORT KBS_Handler [WEAK]
|
||||
;EXPORT QDEC_Handler [WEAK]
|
||||
EXPORT GADC_Handler [WEAK]
|
||||
EXPORT PWM_Handler [WEAK]
|
||||
EXPORT AES_Handler [WEAK]
|
||||
|
||||
EXPORT PendSV_Handler [WEAK]
|
||||
EXPORT SysTick_Handler [WEAK]
|
||||
|
||||
EXPORT USB_Handler [WEAK];20
|
||||
EXPORT AUDIO_Handler [WEAK];21
|
||||
EXPORT RF24G_Handler [WEAK];22
|
||||
EXPORT SPI2_Handler [WEAK];23
|
||||
;EXPORT MPU_Handler [WEAK];24
|
||||
EXPORT UART2_Handler [WEAK];25
|
||||
EXPORT I2S_Handler [WEAK];26
|
||||
EXPORT AOTIMER0_Handler [WEAK];27
|
||||
EXPORT AOTIMER1_Handler [WEAK];28
|
||||
EXPORT CMP_Handler [WEAK];29
|
||||
EXPORT FMC_Handler [WEAK];30
|
||||
EXPORT CAN_Handler [WEAK];31
|
||||
|
||||
PendSV_Handler
|
||||
SysTick_Handler
|
||||
BLE_Handler
|
||||
RF24G_Handler
|
||||
DMA_Handler
|
||||
CPR_Handler
|
||||
GPIO_Handler
|
||||
RTC_Handler
|
||||
TIMER0_Handler
|
||||
TIMER1_Handler
|
||||
TIMER2_Handler
|
||||
TIMER3_Handler
|
||||
WDT_Handler
|
||||
I2C_Handler
|
||||
I2S_Handler
|
||||
UART0_Handler
|
||||
UART1_Handler
|
||||
UART2_Handler
|
||||
SPI0_Handler
|
||||
SPI1_Handler
|
||||
SPI2_Handler
|
||||
;KBS_Handler
|
||||
;QDEC_Handler
|
||||
GADC_Handler
|
||||
PWM_Handler
|
||||
AUDIO_Handler
|
||||
;SIM_Handler
|
||||
AES_Handler
|
||||
AOTIMER0_Handler
|
||||
AOTIMER1_Handler
|
||||
CMP_Handler
|
||||
FMC_Handler
|
||||
CAN_Handler
|
||||
USB_Handler
|
||||
|
||||
B .
|
||||
ENDP
|
||||
|
||||
|
||||
ALIGN
|
||||
|
||||
; User Initial Stack & Heap
|
||||
|
||||
IMPORT __use_two_region_memory
|
||||
EXPORT __user_initial_stackheap
|
||||
__user_initial_stackheap
|
||||
|
||||
LDR R0, = Heap_Mem
|
||||
LDR R1, = (Stack_Mem + Stack_Size)
|
||||
LDR R2, = (Heap_Mem + Heap_Size)
|
||||
LDR R3, = Stack_Mem
|
||||
BX LR
|
||||
|
||||
ALIGN
|
||||
|
||||
END
|
||||
@@ -0,0 +1,123 @@
|
||||
/**
|
||||
* Initialize the system
|
||||
*
|
||||
* @param none
|
||||
* @return none
|
||||
*
|
||||
* @brief Setup the microcontroller system
|
||||
*
|
||||
*/
|
||||
|
||||
/*-----------------------------------------------------------------------------------
|
||||
INCLUDE HEADE FILES
|
||||
------------------------------------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
|
||||
#include "xc6xxx.h"
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Macros
|
||||
-------------------------------------------------------------------------------------*/
|
||||
#define __DEBUG_OUT_PORT 0
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Functions
|
||||
-------------------------------------------------------------------------------------*/
|
||||
#define VECTOR_NUM 48
|
||||
|
||||
void set_vector(void)
|
||||
{
|
||||
#if (USE_XIP == 1)
|
||||
__disable_irq();
|
||||
for (uint32_t i = 0, *Pvector = (uint32_t *)(0x11013000 + 0),
|
||||
*_vector_table = (uint32_t *)(0x10000000);
|
||||
i < VECTOR_NUM; i++) // copy vertor table
|
||||
{
|
||||
_vector_table[i] = *Pvector++;
|
||||
}
|
||||
|
||||
*((volatile unsigned int *)(0x4000013C)) =
|
||||
0x10000001; // inter vertor table remap
|
||||
__enable_irq();
|
||||
#endif
|
||||
}
|
||||
|
||||
static void WDT_ResetInit(void)
|
||||
{
|
||||
cpr_ctlapbclken_grctl__wdt_pclk_en__setf(ENABLE);
|
||||
|
||||
cpr_rstctl_ctlapb_sw__wdt_rstn__setf(RSTCTL_ENABLE);
|
||||
cpr_rstctl_ctlapb_sw__wdt_rstn__setf(RSTCTL_DISABLE);
|
||||
|
||||
cpr_rstctl_wdtrst_mask_set(
|
||||
(WDT_SYS_RSTN_MASK_DISABLE | WDT_M0_RSTN_MASK_ENABLE));
|
||||
|
||||
cpr_lp_ctl__wdt_tclk_en__setf(DISABLE);
|
||||
wdt_cr__wdt_en__setf(DISABLE);
|
||||
}
|
||||
|
||||
#if (SCATTER_LOAD_RAM_EM)
|
||||
#define readl(addr) (*(volatile unsigned int *) (addr))
|
||||
#define writel(addr, value) (*(volatile unsigned int *) (addr) = (value))
|
||||
#endif
|
||||
|
||||
void SystemInit(void)
|
||||
{
|
||||
WDT_ResetInit();
|
||||
|
||||
#if (USE_XIP == 1)
|
||||
|
||||
set_vector();
|
||||
#endif
|
||||
|
||||
#if (SCATTER_LOAD_RAM_EM)
|
||||
//enable BT CLK
|
||||
writel(0x40000040, readl(0x40000040) | (0x01 << 4) | 0xFFFF0000);
|
||||
#endif
|
||||
}
|
||||
|
||||
__RAM_CODE int sendchar(int c)
|
||||
{
|
||||
unsigned int status;
|
||||
#if (__DEBUG_OUT_PORT == 1)
|
||||
for (;;) {
|
||||
status = (*((volatile unsigned *)(0x40011000 + 0x14)));
|
||||
status &= 0x20;
|
||||
if (status == 0x20)
|
||||
break;
|
||||
}
|
||||
(*((volatile unsigned *)(0x40011000 + 0x00))) = c;
|
||||
return (1);
|
||||
#else
|
||||
for (;;) {
|
||||
status = (*((volatile unsigned *)(0x40010000 + 0x14)));
|
||||
status &= 0x20;
|
||||
if (status == 0x20)
|
||||
break;
|
||||
}
|
||||
(*((volatile unsigned *)(0x40010000 + 0x00))) = c;
|
||||
return (1);
|
||||
#endif
|
||||
}
|
||||
|
||||
struct __FILE
|
||||
{
|
||||
int handle; /* Add whatever you need here */
|
||||
};
|
||||
|
||||
FILE __stdout;
|
||||
__RAM_CODE int fputc(int ch, FILE *f) { return (sendchar(ch)); }
|
||||
|
||||
int ferror(FILE *f)
|
||||
{
|
||||
/* Your implementation of ferror */
|
||||
return EOF;
|
||||
}
|
||||
|
||||
void _ttywrch(int ch) { sendchar(ch); }
|
||||
|
||||
void _sys_exit(int return_code)
|
||||
{
|
||||
label:
|
||||
goto label; /* endless loop */
|
||||
}
|
||||
@@ -0,0 +1,233 @@
|
||||
/*!
|
||||
* \file timer.c
|
||||
*
|
||||
* \brief Target timer implementation
|
||||
*
|
||||
* \copyright Revised BSD License, see section \ref LICENSE.
|
||||
*
|
||||
* \code
|
||||
*
|
||||
* _ __ _ ________ _
|
||||
* | |/ /(_)___ / ____/ /_ (_)___
|
||||
* | // / __ \/ / / __ \/ / __ \
|
||||
* / |/ / / / / /___/ / / / / /_/ /
|
||||
* /_/|_/_/_/ /_/\____/_/ /_/_/ .___/
|
||||
* /_/
|
||||
* (C) 2022-2025 XinChip
|
||||
*
|
||||
* \endcode
|
||||
*
|
||||
* \author ( XinChip ) Alex-J
|
||||
*
|
||||
* \author ( XinChip )
|
||||
*/
|
||||
|
||||
/*-----------------------------------------------------------------------------------
|
||||
INCLUDE HEADE FILES
|
||||
------------------------------------------------------------------------------------*/
|
||||
#include "timer.h"
|
||||
#include "xc_drv_timer.h"
|
||||
#include "rgblight.h"
|
||||
#include "nec_infrared.h"
|
||||
/*------------------------------------------------------------------------------------
|
||||
Macros
|
||||
-------------------------------------------------------------------------------------*/
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Global Variables
|
||||
-------------------------------------------------------------------------------------*/
|
||||
TimerStatus_t timer_status =
|
||||
{
|
||||
.t0_flag = false,
|
||||
// .t1_flag = false,
|
||||
// .t2_flag = false,
|
||||
// .t3_flag = false,
|
||||
};
|
||||
// 定义多个软定时器
|
||||
Timer timer1, timer2, timer4, timer5;
|
||||
/*------------------------------------------------------------------------------------
|
||||
Func Prototype
|
||||
-------------------------------------------------------------------------------------*/
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Functions
|
||||
-------------------------------------------------------------------------------------*/
|
||||
// 初始化定时器
|
||||
void initTimer(Timer *timer)
|
||||
{
|
||||
timer->count = 0;
|
||||
timer->active = 1;
|
||||
}
|
||||
|
||||
// 更新定时器
|
||||
void updateTimer(Timer *timer)
|
||||
{
|
||||
if (timer->active && timer->count > 0)
|
||||
{
|
||||
timer->count--;
|
||||
if (timer->count == 0)
|
||||
{
|
||||
timer->active = 0; // 定时器到达设定时间,将活跃状态置为0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 启动定时器
|
||||
void startTimer(Timer *timer, unsigned int duration)
|
||||
{
|
||||
timer->count = duration;
|
||||
timer->active = 1;
|
||||
}
|
||||
// 中止定时器
|
||||
void stopTimer(Timer *timer)
|
||||
{
|
||||
timer->active = 1;
|
||||
timer->count = 0;
|
||||
}
|
||||
|
||||
// 软定时器1到达设定时间时执行的函数
|
||||
void timer1Callback(uint8_t mode)//模式切换回调
|
||||
{
|
||||
modefunctin[mode]();
|
||||
}
|
||||
|
||||
// 软定时器2到达设定时间时执行的函数
|
||||
void timer2Callback(void)//占空比刷新回调
|
||||
{
|
||||
UpdateDisplay();//更新显示
|
||||
}
|
||||
// 软定时器4到达设定时间时执行的函数
|
||||
void timer4Callback(void)//对码计时
|
||||
{
|
||||
MatchOverFlag = 1;
|
||||
}
|
||||
// 软定时器5到达设定时间时执行的函数
|
||||
void timer5Callback(uint8_t mode)//模式循环
|
||||
{
|
||||
|
||||
if (++MODE19_i > 18) //先自增,如果大于20,就赋值0;
|
||||
MODE19_i = 0;
|
||||
|
||||
if (mode == MODE19)
|
||||
{
|
||||
updateParameterMode19(MODE19_i);
|
||||
startTimer(&timer1, 1); // 立刻启动定时器1,设定间隔为1ms,执行1次,每次进来就是切换到下一个程序,需要立刻切换,
|
||||
startTimer(&timer5, 20000);//程序切换周期20s
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief timer0_init
|
||||
* @details
|
||||
* @param void
|
||||
* @retval void
|
||||
*/
|
||||
void timer0_2_init(void)
|
||||
{
|
||||
uint32_t us = 1000;//定时1ms
|
||||
Timer_InitCfg_t timer_cfg;
|
||||
|
||||
timer_cfg.timer_src_clk = TIMER_CLK_SRC_32K;
|
||||
timer_cfg.timer_div_clk = TIMER_DIV_CLK_16MHzOr16K;
|
||||
timer_cfg.timer_mode = TIMER_MODE_CYCLE;
|
||||
|
||||
// Timer0 Config & Start
|
||||
xc_timer_init(TIMER0_IDX, &timer_cfg);
|
||||
xc_timer_set_value(TIMER0_IDX, us);//for(int m=0;m<0x455000;m++);
|
||||
xc_timer_start(TIMER0_IDX);
|
||||
// Timer1 Config & Start
|
||||
us = 20000;//定时20ms
|
||||
timer_cfg.timer_mode = TIMER_MODE_SINGLE;//单次计时
|
||||
xc_timer_init(TIMER2_IDX, &timer_cfg);
|
||||
xc_timer_set_value(TIMER2_IDX, us);
|
||||
// xc_timer_start(TIMER2_IDX);
|
||||
|
||||
startTimer(&timer1, 1); // 立刻启动定时器1,设定间隔为1ms,执行1次
|
||||
startTimer(&timer4, 5000); // 立刻启动定时器1,设定间隔为5s,执行1次
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Timer0_Callback
|
||||
* @details Timer0 handler callback function
|
||||
* @param void *context
|
||||
* @retval void
|
||||
*/
|
||||
__RAM_CODE void timer0_callback(void *context)
|
||||
{
|
||||
// 在中断服务函数中更新定时器0的状态
|
||||
updateTimer(&timer1);
|
||||
updateTimer(&timer2);
|
||||
// updateTimer(&timer3);
|
||||
updateTimer(&timer4);
|
||||
updateTimer(&timer5);
|
||||
|
||||
if (!timer1.active && timer1.count == 0)
|
||||
{
|
||||
stopTimer(&timer1);
|
||||
if (CurrentModel == DYNAMICMODE)
|
||||
{
|
||||
timer1Callback(mode); // 执行定时器1到达设定时间时的函数
|
||||
}
|
||||
if (CurrentStatus == DYNAMICEEFECT) //处于动态效果才重复启动定时器
|
||||
{
|
||||
if (mode == MODE19)
|
||||
{
|
||||
if (MODE19_i == MODE0)
|
||||
return;
|
||||
else if (MODE19_i == MODE1 || MODE19_i == MODE2 || MODE19_i == MODE3)
|
||||
startTimer(&timer1, FadeSpeed); // 重新启动定时器1,设定间隔为10ms
|
||||
|
||||
else
|
||||
startTimer(&timer1, speedOption[TimeSpeed]); // 重新启动定时器1,设定间隔为500ms
|
||||
}
|
||||
else
|
||||
{
|
||||
if (mode == MODE1 || mode == MODE2 || mode == MODE3)
|
||||
startTimer(&timer1, FadeSpeed); // 重新启动定时器1,设定间隔为10ms
|
||||
else
|
||||
startTimer(&timer1, speedOption[TimeSpeed]); // 重新启动定时器1,设定间隔为500ms
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
// 检查定时器2是否到达设定时间
|
||||
if (!timer2.active && timer2.count == 0)
|
||||
{
|
||||
stopTimer(&timer2);
|
||||
timer2Callback(); // 执行定时器2到达设定时间时的函数
|
||||
}
|
||||
if (!timer4.active && timer4.count == 0)
|
||||
{
|
||||
stopTimer(&timer4);
|
||||
timer4Callback(); // 执行定时器4到达设定时间时的函数
|
||||
}
|
||||
if (!timer5.active && timer5.count == 0)
|
||||
{
|
||||
stopTimer(&timer5);
|
||||
timer5Callback(mode); // 执行定时器5到达设定时间时的函数
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Timer1_Callback
|
||||
* @details Timer1 handler callback function
|
||||
* @param void *context
|
||||
* @retval void
|
||||
*/
|
||||
__RAM_CODE void timer2_callback(void *context)
|
||||
{
|
||||
xc_timer_stop(TIMER2_IDX);
|
||||
uint32_t us = 20000;
|
||||
xc_timer_set_value(TIMER2_IDX, us);
|
||||
|
||||
IR.IR_decode_bit = 0; //电平计数超过了码元长度 清除位数计数
|
||||
IR.IR_code = 0;
|
||||
IR.IR_event = 0;
|
||||
|
||||
IR.IR_code_get = 0;
|
||||
IR.low_8bit = 0;
|
||||
IR.hig_8bit = 0;
|
||||
IR.rece_ok = 0;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,85 @@
|
||||
/*!
|
||||
* \file timer.h
|
||||
*
|
||||
* \brief The head file of timer.c
|
||||
*
|
||||
* \copyright Revised BSD License, see section \ref LICENSE.
|
||||
*
|
||||
* \code
|
||||
*
|
||||
* _ __ _ ________ _
|
||||
* | |/ /(_)___ / ____/ /_ (_)___
|
||||
* | // / __ \/ / / __ \/ / __ \
|
||||
* / |/ / / / / /___/ / / / / /_/ /
|
||||
* /_/|_/_/_/ /_/\____/_/ /_/_/ .___/
|
||||
* /_/
|
||||
* (C) 2022-2025 XinChip
|
||||
*
|
||||
* \endcode
|
||||
*
|
||||
* \author ( XinChip ) Alex-J
|
||||
*
|
||||
* \author ( XinChip )
|
||||
*/
|
||||
|
||||
/* Define to prevent recursive inclusion -------------------------------------*/
|
||||
#ifndef __TIMER_H__
|
||||
#define __TIMER_H__
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*-----------------------------------------------------------------------------------
|
||||
INCLUDE HEADE FILES
|
||||
------------------------------------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdint.h>
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Macros
|
||||
-------------------------------------------------------------------------------------*/
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
TypeDef
|
||||
-------------------------------------------------------------------------------------*/
|
||||
typedef struct TimerStatus_s
|
||||
{
|
||||
uint8_t t0_flag;
|
||||
uint8_t t1_flag;
|
||||
uint8_t t2_flag;
|
||||
uint8_t t3_flag;
|
||||
|
||||
} TimerStatus_t;
|
||||
|
||||
// 定义定时器结构体
|
||||
typedef struct {
|
||||
unsigned int count; // 计数器
|
||||
unsigned char active; // 活跃状态
|
||||
} Timer;
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Global Variables
|
||||
-------------------------------------------------------------------------------------*/
|
||||
extern Timer timer1, timer2, timer4, timer5;
|
||||
/*------------------------------------------------------------------------------------
|
||||
Exported Functions
|
||||
-------------------------------------------------------------------------------------*/
|
||||
void timer0_2_init(void);
|
||||
void initTimer(Timer *timer);
|
||||
void updateTimer(Timer *timer);
|
||||
void startTimer(Timer *timer, unsigned int duration);
|
||||
void stopTimer(Timer *timer);
|
||||
void timer1Callback(uint8_t mode);
|
||||
void timer2Callback(void);
|
||||
//void timer3Callback(void);
|
||||
void timer4Callback(void);
|
||||
void timer5Callback(uint8_t mode);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __TIMER_H__ */
|
||||
|
||||
@@ -0,0 +1,181 @@
|
||||
/*!
|
||||
* \file uart.c
|
||||
*
|
||||
* \brief Target uart implementation
|
||||
*
|
||||
* \copyright Revised BSD License, see section \ref LICENSE.
|
||||
*
|
||||
* \code
|
||||
*
|
||||
* _ __ _ ________ _
|
||||
* | |/ /(_)___ / ____/ /_ (_)___
|
||||
* | // / __ \/ / / __ \/ / __ \
|
||||
* / |/ / / / / /___/ / / / / /_/ /
|
||||
* /_/|_/_/_/ /_/\____/_/ /_/_/ .___/
|
||||
* /_/
|
||||
* (C) 2022-2025 XinChip
|
||||
*
|
||||
* \endcode
|
||||
*
|
||||
* \author ( XinChip ) Alex-J
|
||||
*
|
||||
* \author ( XinChip )
|
||||
*/
|
||||
|
||||
/*-----------------------------------------------------------------------------------
|
||||
INCLUDE HEADE FILES
|
||||
------------------------------------------------------------------------------------*/
|
||||
#include "uart.h"
|
||||
#include "xc_drv_uart.h"
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Macros
|
||||
-------------------------------------------------------------------------------------*/
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Global Variables
|
||||
-------------------------------------------------------------------------------------*/
|
||||
|
||||
uint8_t only_read_charactertics_buffer[5] = {5, 4, 3, 2, 1};
|
||||
uint8_t only_read_charactertics_buffer_length = 5;
|
||||
|
||||
uint8_t buffer[5] = {0xAA, 0xAA, 0xAA, 0xAA, 0xAA};
|
||||
extern bool buffer_complet_flag;
|
||||
/*------------------------------------------------------------------------------------
|
||||
Functions
|
||||
-------------------------------------------------------------------------------------*/
|
||||
/**
|
||||
* @brief uart_demo
|
||||
* @details
|
||||
* @param void
|
||||
* @retval void
|
||||
*/
|
||||
void uart_demo(void)
|
||||
{
|
||||
DEBUG("__UART_DEMO__\n");
|
||||
|
||||
|
||||
uint8_t uart_handle = UART0_IDX;
|
||||
|
||||
if (uart_handle == UART1_IDX)
|
||||
{
|
||||
GPIO_InitCfg_t gpio_cfg = {0};
|
||||
|
||||
gpio_cfg.Mux = GPIO_Mux0;
|
||||
gpio_cfg.Pull = GPIO_PULLUP;
|
||||
gpio_cfg.Int = NOT_INT;
|
||||
|
||||
gpio_cfg.Pin = GPIO_3;
|
||||
gpio_cfg.Dir = GPIO_DIR_OUTPUT;
|
||||
gpio_cfg.FunSel = UART1_TX;
|
||||
xc_gpio_init(&gpio_cfg);
|
||||
|
||||
gpio_cfg.Pin = GPIO_2;
|
||||
gpio_cfg.Dir = GPIO_DIR_INPUT;
|
||||
gpio_cfg.FunSel = UART1_RX;
|
||||
xc_gpio_init(&gpio_cfg);
|
||||
|
||||
UART_InitCfg_t uart_cfg = {0};
|
||||
|
||||
uart_cfg.Parity = UART_PARITY_DISABLE;
|
||||
uart_cfg.StopBits = UART_TCR_STOP_1BITS;
|
||||
uart_cfg.WordLength = UART_DATA_8_BITS;
|
||||
uart_cfg.BaudRate = UART_BAUDRATE_2400;
|
||||
uart_cfg.HardwareFlowControl = UART_HWFC_DISABLE;
|
||||
|
||||
xc_uart_init(uart_handle, &uart_cfg);
|
||||
}
|
||||
else if (uart_handle == UART2_IDX)
|
||||
{
|
||||
GPIO_InitCfg_t gpio_cfg = {0};
|
||||
|
||||
gpio_cfg.Mux = GPIO_Mux1;
|
||||
gpio_cfg.Pull = GPIO_PULLUP;
|
||||
gpio_cfg.Int = NOT_INT;
|
||||
gpio_cfg.FunSel = GPIO_Dx;
|
||||
|
||||
gpio_cfg.Pin = GPIO_32; // uart2 tx
|
||||
gpio_cfg.Dir = GPIO_DIR_OUTPUT;
|
||||
|
||||
xc_gpio_init(&gpio_cfg);
|
||||
|
||||
gpio_cfg.Pin = GPIO_31; // uart2 rx
|
||||
gpio_cfg.Dir = GPIO_DIR_INPUT;
|
||||
xc_gpio_init(&gpio_cfg);
|
||||
|
||||
UART_InitCfg_t uart_cfg = {0};
|
||||
|
||||
uart_cfg.Parity = UART_PARITY_DISABLE;
|
||||
uart_cfg.StopBits = UART_STOP_1_BITS;
|
||||
uart_cfg.WordLength = UART_DATA_8_BITS;
|
||||
uart_cfg.BaudRate = UART_BAUDRATE_115200;
|
||||
uart_cfg.HardwareFlowControl = UART_HWFC_DISABLE;
|
||||
|
||||
xc_uart_init(uart_handle, &uart_cfg);
|
||||
}
|
||||
|
||||
xc_uart_enable_rx_it(uart_handle);
|
||||
|
||||
if (uart_handle == UART0_IDX)
|
||||
{
|
||||
NVIC_EnableIRQ(UART0_IRQn);
|
||||
}
|
||||
else if (uart_handle == UART1_IDX)
|
||||
{
|
||||
NVIC_EnableIRQ(UART1_IRQn);
|
||||
}
|
||||
else if (uart_handle == UART2_IDX)
|
||||
{
|
||||
NVIC_EnableIRQ(UART2_IRQn);
|
||||
}
|
||||
|
||||
// for(int i=0; i<26; i++)
|
||||
// {
|
||||
// rxbuff[i] = i+'A';
|
||||
// }
|
||||
// xc_uart_send_data(uart_handle,rxbuff,26);
|
||||
|
||||
|
||||
|
||||
printf("test\n");
|
||||
|
||||
|
||||
// while(1)
|
||||
// {
|
||||
// data_len = xc_uart_receive_data(uart_handle, rxbuff);
|
||||
// if(data_len)
|
||||
// {
|
||||
// xc_uart_send_data(uart_handle,rxbuff,data_len);
|
||||
// data_len = 0;
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
void scan_uart(void)
|
||||
{
|
||||
// data_len = xc_uart_receive_data(uart_handle, rxbuff);
|
||||
if (buffer_complet_flag)
|
||||
{
|
||||
static uint8_t n = 1;
|
||||
|
||||
// uint16_t data_len = 0;
|
||||
uint8_t *rxbuff;
|
||||
uint8_t uart_handle = UART0_IDX;
|
||||
|
||||
buffer_complet_flag = 0;
|
||||
xc_uart_receive_data(uart_handle, rxbuff);
|
||||
for (uint8_t i = 0; i < 5; i++)
|
||||
{
|
||||
only_read_charactertics_buffer[i] = rxbuff[i];
|
||||
}
|
||||
|
||||
if (n == 1)
|
||||
{
|
||||
n--;
|
||||
xc_uart_send_data(uart_handle, only_read_charactertics_buffer, 5);
|
||||
}
|
||||
|
||||
|
||||
// data_len = 0;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
/*!
|
||||
* \file uart.h
|
||||
*
|
||||
* \brief The head file of uart.c
|
||||
*
|
||||
* \copyright Revised BSD License, see section \ref LICENSE.
|
||||
*
|
||||
* \code
|
||||
*
|
||||
* _ __ _ ________ _
|
||||
* | |/ /(_)___ / ____/ /_ (_)___
|
||||
* | // / __ \/ / / __ \/ / __ \
|
||||
* / |/ / / / / /___/ / / / / /_/ /
|
||||
* /_/|_/_/_/ /_/\____/_/ /_/_/ .___/
|
||||
* /_/
|
||||
* (C) 2022-2025 XinChip
|
||||
*
|
||||
* \endcode
|
||||
*
|
||||
* \author ( XinChip ) Alex-J
|
||||
*
|
||||
* \author ( XinChip )
|
||||
*/
|
||||
|
||||
/* Define to prevent recursive inclusion -------------------------------------*/
|
||||
#ifndef __UART_H__
|
||||
#define __UART_H__
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*-----------------------------------------------------------------------------------
|
||||
INCLUDE HEADE FILES
|
||||
------------------------------------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdint.h>
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Macros
|
||||
-------------------------------------------------------------------------------------*/
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
TypeDef
|
||||
-------------------------------------------------------------------------------------*/
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Global Variables
|
||||
-------------------------------------------------------------------------------------*/
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Exported Functions
|
||||
-------------------------------------------------------------------------------------*/
|
||||
void uart_demo(void);
|
||||
void scan_uart(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __UART_H__ */
|
||||
|
||||
|
||||
@@ -0,0 +1,219 @@
|
||||
|
||||
/**
|
||||
****************************************************************************************
|
||||
*
|
||||
* @file usr_server.c
|
||||
*
|
||||
* @brief Custom Server profile database definitions.
|
||||
*
|
||||
* Copyright (c) 2022 - 2025, XinChip
|
||||
* All rights reserved.p
|
||||
*
|
||||
****************************************************************************************
|
||||
*/
|
||||
#include "usr_server.h"
|
||||
#include "gpio.h"
|
||||
#include "xc_drv_gpio.h"
|
||||
|
||||
#include "rgblight.h"
|
||||
#if (BLE_APP_PRESENT)
|
||||
|
||||
uint8_t srv_user_lid = GATT_INVALID_USER_LID;
|
||||
uint16_t custom_svc_start_hdl = GATT_INVALID_HDL;
|
||||
uint8_t custom_svc_tx_char_notify = DISABLE;
|
||||
|
||||
|
||||
|
||||
extern uint8_t only_read_charactertics_buffer[5];
|
||||
extern uint8_t only_read_charactertics_buffer_length;
|
||||
|
||||
__WEAK void ble_callback(uint8_t value0,uint8_t value1,uint8_t value2,uint8_t value3)
|
||||
{
|
||||
|
||||
}
|
||||
static const gatt_att16_desc_t custom_server_atts[] =
|
||||
{
|
||||
[CUSTOM_SVC_DECL] =
|
||||
{
|
||||
.uuid16 = GATT_DECL_PRIMARY_SERVICE,
|
||||
.info = GATT_ATT_RD_BIT,
|
||||
.ext_info = 0,
|
||||
},
|
||||
[CUSTOM_SVC_RX_CHAR_DECL_CHAR] =
|
||||
{
|
||||
.uuid16 = GATT_DECL_CHARACTERISTIC,
|
||||
.info = GATT_ATT_RD_BIT,
|
||||
.ext_info = 0,
|
||||
},
|
||||
[CUSTOM_SVC_RX_CHAR_VAL] =
|
||||
{
|
||||
.uuid16 = CUSTOM_SVC_RX_CHAR_UUID,
|
||||
.info = GATT_ATT_RD_BIT | GATT_ATT_WC_BIT | GATT_ATT_WR_BIT,
|
||||
.ext_info =
|
||||
GATT_ATT_NO_OFFSET_BIT | CUSTOM_SVC_RX_CHAR_VAL_MAX_LENGTH,
|
||||
},
|
||||
[CUSTOM_SVC_TX_CHAR_DECL_CHAR] =
|
||||
{
|
||||
.uuid16 = GATT_DECL_CHARACTERISTIC,
|
||||
.info = GATT_ATT_RD_BIT,
|
||||
.ext_info = 0,
|
||||
},
|
||||
[CUSTOM_SVC_TX_CHAR_VAL] =
|
||||
{
|
||||
.uuid16 = CUSTOM_SVC_TX_CHAR_UUID,
|
||||
.info = GATT_ATT_RD_BIT | GATT_ATT_N_BIT,
|
||||
.ext_info =
|
||||
GATT_ATT_NO_OFFSET_BIT | CUSTOM_SVC_TX_CHAR_VAL_MAX_LENGTH,
|
||||
},
|
||||
[CUSTOM_SVC_TX_CHAR_CFG] =
|
||||
{
|
||||
.uuid16 = GATT_DESC_CLIENT_CHAR_CFG,
|
||||
.info = GATT_ATT_RD_BIT | GATT_ATT_WR_BIT,
|
||||
.ext_info = 0,
|
||||
},
|
||||
};
|
||||
|
||||
uint8_t slave_send_data(uint8_t *data, uint8_t len, uint8_t att_idx);
|
||||
|
||||
uint16_t srv_get_hdl_from_att_idx(uint8_t idx)
|
||||
{
|
||||
return custom_svc_start_hdl + idx ;
|
||||
}
|
||||
|
||||
// This function is called when GATT server user has initiated event send to
|
||||
// peer device or if an error occurs.
|
||||
__STATIC void custom_svc_cb_event_sent(uint8_t conidx, uint8_t user_lid,
|
||||
uint16_t dummy, uint16_t status)
|
||||
{
|
||||
LOGI("[%s] conidx:%d, usr_lid:%d, dummy:%d, status:%d \r\n", __func__,
|
||||
conidx, user_lid, dummy, status);
|
||||
}
|
||||
|
||||
// This function is called when peer want to read local attribute database
|
||||
// value.
|
||||
__STATIC void custom_svc_cb_att_read_get(uint8_t conidx, uint8_t user_lid,
|
||||
uint16_t token, uint16_t hdl,
|
||||
uint16_t offset, uint16_t max_length)
|
||||
{
|
||||
uint16_t status;
|
||||
//接收到的串口数据,写入该缓存,手机可以读取
|
||||
// uint8_t data[] = {0x12, 0x15, 0x46, 0x62,0x22};
|
||||
|
||||
LOGI("[%s] conidx:%d, usr_lid:%d, token:%d, hdl:%d, offset:%d, "
|
||||
"max_length:%d \r\n",
|
||||
__func__, conidx, user_lid, token, hdl, offset, max_length);
|
||||
// Send result to peer device
|
||||
// status = xc_ble_gatt_srv_read_cfm(conidx, user_lid, token, GAP_ERR_NO_ERROR,
|
||||
// sizeof(data), sizeof(data), data);
|
||||
status = xc_ble_gatt_srv_read_cfm(conidx, user_lid, token, GAP_ERR_NO_ERROR,
|
||||
sizeof(only_read_charactertics_buffer), sizeof(only_read_charactertics_buffer), only_read_charactertics_buffer);
|
||||
if (status != GATT_NO_ERROR)
|
||||
{
|
||||
LOGI_ERR("gatt_srv_read_cfm error 0x%x", status);
|
||||
}
|
||||
}
|
||||
|
||||
// This function is called during a write procedure to modify attribute handle.
|
||||
__STATIC void custom_svc_cb_att_val_set(uint8_t conidx, uint8_t user_lid,
|
||||
uint16_t token, uint16_t hdl,
|
||||
uint16_t offset, co_buf_t *p_data)
|
||||
{
|
||||
uint16_t length = co_buf_data_len(p_data);
|
||||
uint16_t status;
|
||||
LOGI("[%s] conidx:%d, usr_lid:%d, token:%d, hdl:%d, offset:%d \r\n",
|
||||
__func__, conidx, user_lid, token, hdl, offset);
|
||||
status =
|
||||
xc_ble_gatt_srv_write_cfm(conidx, user_lid, token, GAP_ERR_NO_ERROR);
|
||||
if (status != GATT_NO_ERROR)
|
||||
{
|
||||
LOGI_ERR("gatt_srv_write_cfm error 0x%x", status);
|
||||
}
|
||||
LOGI("length:%d data:\r\n", length);
|
||||
// DUMP_DATA_PRINTF(&(co_buf_data(p_data)[0]), length);
|
||||
|
||||
// 检查写入的数据是否是 0x12
|
||||
// if (length == 1 && co_buf_data(p_data)[0] == 0x12)
|
||||
if (length == 4)
|
||||
{
|
||||
|
||||
|
||||
ble_callback(co_buf_data(p_data)[0],co_buf_data(p_data)[1],co_buf_data(p_data)[2],co_buf_data(p_data)[3]);
|
||||
// 设置指定的 GPIO 引脚为高电平
|
||||
// xc_gpio_write_pin(LED3_PIN, GPIO_PIN_SET);
|
||||
|
||||
|
||||
// only_read_charactertics_buffer[0] = co_buf_data(p_data)[0];r_DutyCycle*Brightness/10
|
||||
// only_read_charactertics_buffer[0] = (uint8_t)(r_DutyCycle*Brightness/10);
|
||||
// only_read_charactertics_buffer[1] = co_buf_data(p_data)[1];
|
||||
// only_read_charactertics_buffer[2] = co_buf_data(p_data)[2];
|
||||
// only_read_charactertics_buffer[3] = co_buf_data(p_data)[3];
|
||||
}
|
||||
else
|
||||
{
|
||||
// xc_gpio_write_pin(LED3_PIN, GPIO_PIN_RESET);
|
||||
// LOGI("LED3_PIN:%d", xc_gpio_read_pin(LED3_PIN));
|
||||
}
|
||||
|
||||
if (hdl == srv_get_hdl_from_att_idx(CUSTOM_SVC_TX_CHAR_CFG))
|
||||
{
|
||||
if ((co_buf_data(p_data)[0] == 0) && (co_buf_data(p_data)[1] == 0))
|
||||
{
|
||||
custom_svc_tx_char_notify = DISABLE;
|
||||
}
|
||||
else
|
||||
{
|
||||
custom_svc_tx_char_notify = ENABLE;
|
||||
uint8_t data[] = {0x12, 0x13, 0x14};
|
||||
slave_send_data(data, sizeof(data), CUSTOM_SVC_TX_CHAR_VAL);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static const gatt_srv_cb_t custom_src_cb =
|
||||
{
|
||||
.cb_event_sent = custom_svc_cb_event_sent,
|
||||
.cb_att_read_get = custom_svc_cb_att_read_get,
|
||||
.cb_att_val_set = custom_svc_cb_att_val_set,
|
||||
};
|
||||
|
||||
uint8_t custom_svc_add(void)
|
||||
{
|
||||
int nb_att = sizeof(custom_server_atts) / sizeof(custom_server_atts[0]);
|
||||
uint16_t status;
|
||||
uint16_t custom_svc_uuid = CUSTOM_SVC_UUID;
|
||||
status = xc_ble_gatt_user_srv_register(GAP_LE_MTU_MAX, 0, &custom_src_cb,
|
||||
&srv_user_lid);
|
||||
if (status != GATT_NO_ERROR)
|
||||
{
|
||||
LOGI_ERR("gatt_user_srv_register error 0x%x", status);
|
||||
}
|
||||
status = xc_ble_gatt_service16_add(
|
||||
srv_user_lid, GATT_UUID_16 << GATT_SVC_UUID_TYPE_LSB, custom_svc_uuid,
|
||||
nb_att, NULL, &(custom_server_atts[0]), nb_att, &custom_svc_start_hdl);
|
||||
if (status != GATT_NO_ERROR)
|
||||
{
|
||||
LOGI_ERR("gatt_service16_add error 0x%x", status);
|
||||
}
|
||||
return status;
|
||||
}
|
||||
|
||||
uint8_t slave_send_data(uint8_t *data, uint8_t len, uint8_t att_idx)
|
||||
{
|
||||
uint16_t status = INVALID_DATA;
|
||||
struct app_env_tag *app_env = get_app_env();
|
||||
if (app_env->slave_connected && custom_svc_tx_char_notify)
|
||||
{
|
||||
status = xc_ble_gatt_srv_notify(app_env->slave_conidx, srv_user_lid, 0,
|
||||
srv_get_hdl_from_att_idx(att_idx), len,
|
||||
data);
|
||||
if (status != GATT_NO_ERROR)
|
||||
{
|
||||
LOGI_ERR("gatt_srv_notify error 0x%x", status);
|
||||
}
|
||||
}
|
||||
return status;
|
||||
}
|
||||
|
||||
|
||||
|
||||
#endif // (BLE_APP_PRESENT)
|
||||
@@ -0,0 +1,44 @@
|
||||
/**
|
||||
****************************************************************************************
|
||||
*
|
||||
* @file usr_server.h
|
||||
*
|
||||
* @brief Custom Server profile database definitions.
|
||||
*
|
||||
* Copyright (c) 2022 - 2025, XinChip
|
||||
* All rights reserved.
|
||||
*
|
||||
****************************************************************************************
|
||||
*/
|
||||
#ifndef _USR_SERVER_H_
|
||||
#define _USR_SERVER_H_
|
||||
|
||||
#include "app_task.h"
|
||||
#include "dbg.h"
|
||||
#include "gatt.h"
|
||||
#include "gatt_msg.h"
|
||||
#include "rwble_hl_config.h"
|
||||
#include "xc_gatt_server_api.h"
|
||||
|
||||
#define CUSTOM_SVC_UUID 0xFFF0
|
||||
#define CUSTOM_SVC_RX_CHAR_UUID 0xFFF3
|
||||
#define CUSTOM_SVC_TX_CHAR_UUID 0xFFF4
|
||||
#define CUSTOM_SVC_RX_CHAR_VAL_MAX_LENGTH 20
|
||||
#define CUSTOM_SVC_TX_CHAR_VAL_MAX_LENGTH 20
|
||||
|
||||
|
||||
|
||||
|
||||
enum cust_svc
|
||||
{
|
||||
CUSTOM_SVC_DECL = 0,
|
||||
CUSTOM_SVC_RX_CHAR_DECL_CHAR,
|
||||
CUSTOM_SVC_RX_CHAR_VAL,
|
||||
CUSTOM_SVC_TX_CHAR_DECL_CHAR,
|
||||
CUSTOM_SVC_TX_CHAR_VAL,
|
||||
CUSTOM_SVC_TX_CHAR_CFG,
|
||||
};
|
||||
uint8_t custom_svc_add(void);
|
||||
uint8_t slave_send_data(uint8_t *data, uint8_t len, uint8_t att_idx);
|
||||
#endif // _USR_SERVER_H_
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
|
||||
FUNC void Initialization(void)
|
||||
{
|
||||
SP = _RDWORD(0x10000000);
|
||||
PC = _RDWORD(0x10000004);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
LOAD %L INCREMENTAL
|
||||
Initialization();
|
||||
@@ -0,0 +1,39 @@
|
||||
[BREAKPOINTS]
|
||||
ForceImpTypeAny = 0
|
||||
ShowInfoWin = 1
|
||||
EnableFlashBP = 2
|
||||
BPDuringExecution = 0
|
||||
[CFI]
|
||||
CFISize = 0x00
|
||||
CFIAddr = 0x00
|
||||
[CPU]
|
||||
MonModeVTableAddr = 0xFFFFFFFF
|
||||
MonModeDebug = 0
|
||||
MaxNumAPs = 0
|
||||
LowPowerHandlingMode = 0
|
||||
OverrideMemMap = 0
|
||||
AllowSimulation = 1
|
||||
ScriptFile=""
|
||||
[FLASH]
|
||||
CacheExcludeSize = 0x00
|
||||
CacheExcludeAddr = 0x00
|
||||
MinNumBytesFlashDL = 0
|
||||
SkipProgOnCRCMatch = 1
|
||||
VerifyDownload = 1
|
||||
AllowCaching = 1
|
||||
EnableFlashDL = 2
|
||||
Override = 0
|
||||
Device="ARM7"
|
||||
[GENERAL]
|
||||
WorkRAMSize = 0x00
|
||||
WorkRAMAddr = 0x00
|
||||
RAMUsageLimit = 0x00
|
||||
[SWO]
|
||||
SWOLogFile=""
|
||||
[MEM]
|
||||
RdOverrideOrMask = 0x00
|
||||
RdOverrideAndMask = 0xFFFFFFFF
|
||||
RdOverrideAddr = 0xFFFFFFFF
|
||||
WrOverrideOrMask = 0x00
|
||||
WrOverrideAndMask = 0xFFFFFFFF
|
||||
WrOverrideAddr = 0xFFFFFFFF
|
||||
@@ -0,0 +1,16 @@
|
||||
LOAD 0x10000000
|
||||
{
|
||||
EXE 0x10000000
|
||||
{
|
||||
startup_xinc.o (RESET, +FIRST)
|
||||
* (+RO)
|
||||
|
||||
}
|
||||
|
||||
RW +0000
|
||||
{
|
||||
* (+RW,+ZI)
|
||||
}
|
||||
|
||||
ScatterAssert(ImageLength(RW) < 1024 * 28)
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
LOAD 0x11013000
|
||||
{
|
||||
EXE 0x11013000
|
||||
{
|
||||
startup_xinc.o (RESET, +FIRST)
|
||||
* (+RO)
|
||||
|
||||
}
|
||||
|
||||
RW 0x10004800
|
||||
{
|
||||
startup_xinc.o(STACK)
|
||||
* (+RW,+ZI)
|
||||
*(ram_code)
|
||||
}
|
||||
ScatterAssert((0x4800+ImageLength(RW)) < 1024 * 32 )
|
||||
|
||||
; RW1 0x10016000
|
||||
; {
|
||||
|
||||
; }
|
||||
RW2 0x53005B00
|
||||
{
|
||||
*(ram_em)
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,951 @@
|
||||
|
||||
|
||||
|
||||
ARM Macro Assembler Page 1
|
||||
|
||||
|
||||
1 00000000
|
||||
2 00000000 ;/******************************************************
|
||||
***********************
|
||||
3 00000000 ; * @file: startup_xinc.s
|
||||
4 00000000 ; * @purpose: CMSIS Cortex-M0 Core Device Startup File f
|
||||
or the
|
||||
5 00000000 ; * Device xinc.
|
||||
6 00000000 ; ******************************************************
|
||||
***********************/
|
||||
7 00000000
|
||||
8 00000000 00000800
|
||||
Stack_Size
|
||||
EQU 0x00000800
|
||||
9 00000000
|
||||
10 00000000 AREA STACK, NOINIT, READWRITE, ALIGN
|
||||
=3
|
||||
11 00000000 Stack_Mem
|
||||
SPACE Stack_Size
|
||||
12 00000800 __initial_sp
|
||||
13 00000800
|
||||
14 00000800 00000000
|
||||
Heap_Size
|
||||
EQU 0x00000000
|
||||
15 00000800
|
||||
16 00000800 AREA HEAP, NOINIT, READWRITE, ALIGN=
|
||||
3
|
||||
17 00000000 __heap_base
|
||||
18 00000000 Heap_Mem
|
||||
SPACE Heap_Size
|
||||
19 00000000 __heap_limit
|
||||
20 00000000
|
||||
21 00000000
|
||||
22 00000000 PRESERVE8
|
||||
23 00000000 THUMB
|
||||
24 00000000
|
||||
25 00000000 ; Vector Table Mapped to Address 0 at Reset
|
||||
26 00000000
|
||||
27 00000000 AREA RESET, DATA, READONLY
|
||||
28 00000000 EXPORT __Vectors
|
||||
29 00000000 EXPORT __Vectors_End
|
||||
30 00000000 EXPORT __Vectors_Size
|
||||
31 00000000
|
||||
32 00000000 00000000
|
||||
__Vectors
|
||||
DCD __initial_sp ; Top of Stack
|
||||
33 00000004 00000000 DCD Reset_Handler ; Reset Handler
|
||||
34 00000008 00000000 DCD NMI_Handler ; NMI Handler
|
||||
35 0000000C 00000000 DCD HardFault_Handler ; Hard Fault
|
||||
Handler
|
||||
36 00000010 00000000 DCD MemManage_Handler
|
||||
; MPU Fault Handler
|
||||
|
||||
37 00000014 00000000 DCD BusFault_Handler
|
||||
; Bus Fault Handler
|
||||
|
||||
38 00000018 00000000 DCD UsageFault_Handler ; Usage Faul
|
||||
t Handler
|
||||
39 0000001C 00000000 DCD 0 ; Reserved
|
||||
40 00000020 00000000 DCD 0 ; Reserved
|
||||
|
||||
|
||||
|
||||
ARM Macro Assembler Page 2
|
||||
|
||||
|
||||
41 00000024 00000000 DCD 0 ; Reserved
|
||||
42 00000028 00000000 DCD 0 ; Reserved
|
||||
43 0000002C 00000000 DCD SVC_Handler ; SVCall Handler
|
||||
44 00000030 00000000 DCD DebugMon_Handler ; Debug Monito
|
||||
r Handler
|
||||
45 00000034 00000000 DCD 0 ; Reserved
|
||||
46 00000038 00000000 DCD PendSV_Handler ; PendSV Handler
|
||||
|
||||
47 0000003C 00000000 DCD SysTick_Handler
|
||||
; SysTick Handler
|
||||
48 00000040
|
||||
49 00000040 ; External Interrupts
|
||||
50 00000040 ; ToDo: Add here the vectors for the device specific ex
|
||||
ternal interrupts handler
|
||||
51 00000040 00000000 DCD BLE_Handler ; 0
|
||||
52 00000044 00000000 DCD DMA_Handler ; 1
|
||||
53 00000048 00000000 DCD CPR_Handler ; 2
|
||||
54 0000004C 00000000 DCD GPIO_Handler ; 3
|
||||
55 00000050 00000000 DCD RTC_Handler ; 4
|
||||
56 00000054 00000000 DCD TIMER0_Handler ; 5
|
||||
57 00000058 00000000 DCD TIMER1_Handler ; 6
|
||||
58 0000005C 00000000 DCD TIMER2_Handler ; 7
|
||||
59 00000060 00000000 DCD TIMER3_Handler ; 8
|
||||
60 00000064 00000000 DCD WDT_Handler ; 9
|
||||
61 00000068 00000000 DCD I2C_Handler ; 10
|
||||
62 0000006C 00000000 DCD UART0_Handler ; 11
|
||||
63 00000070 00000000 DCD UART1_Handler ; 12
|
||||
64 00000074 00000000 DCD SPI0_Handler ; 13
|
||||
65 00000078 00000000 DCD SPI1_Handler ; 14
|
||||
66 0000007C 00000000 DCD 0 ; 15
|
||||
67 00000080 00000000 DCD 0 ; 16
|
||||
68 00000084 00000000 DCD GADC_Handler ; 17
|
||||
69 00000088 00000000 DCD PWM_Handler ; 18
|
||||
70 0000008C 00000000 DCD AES_Handler ; 19
|
||||
71 00000090 00000000 DCD USB_Handler ; 20
|
||||
72 00000094 00000000 DCD AUDIO_Handler
|
||||
; 21
|
||||
|
||||
73 00000098 00000000 DCD RF24G_Handler ; 22
|
||||
74 0000009C 00000000 DCD SPI2_Handler ; 23
|
||||
75 000000A0 00000000 DCD 0 ; 24
|
||||
76 000000A4 00000000 DCD UART2_Handler ; 25
|
||||
77 000000A8 00000000 DCD I2S_Handler ; 26
|
||||
78 000000AC 00000000 DCD AOTIMER0_Handler ; 27
|
||||
79 000000B0 00000000 DCD AOTIMER1_Handler ; 28
|
||||
80 000000B4 00000000 DCD CMP_Handler ; 29
|
||||
81 000000B8 00000000 DCD FMC_Handler ; 30
|
||||
82 000000BC 00000000 DCD CAN_Handler ; 31
|
||||
83 000000C0
|
||||
84 000000C0 __Vectors_End
|
||||
85 000000C0
|
||||
86 000000C0 000000C0
|
||||
__Vectors_Size
|
||||
EQU __Vectors_End - __Vectors
|
||||
87 000000C0
|
||||
88 000000C0
|
||||
89 000000C0
|
||||
90 000000C0 AREA |.text|, CODE, READONLY
|
||||
91 00000000 ; Reset Handler
|
||||
|
||||
|
||||
|
||||
ARM Macro Assembler Page 3
|
||||
|
||||
|
||||
92 00000000
|
||||
93 00000000 Reset_Handler
|
||||
PROC
|
||||
94 00000000
|
||||
95 00000000 EXPORT Reset_Handler [WEAK]
|
||||
96 00000000
|
||||
97 00000000 IMPORT SystemInit
|
||||
98 00000000 IMPORT __main
|
||||
99 00000000
|
||||
100 00000000 480A LDR r0, =0x4000013C ; remap
|
||||
101 00000002 490B LDR r1, =0x10000001
|
||||
102 00000004 6001 STR r1, [r0]
|
||||
103 00000006
|
||||
104 00000006
|
||||
105 00000006
|
||||
106 00000006 480B LDR R0, =SystemInit
|
||||
107 00000008 4780 BLX R0
|
||||
108 0000000A
|
||||
109 0000000A 480B LDR R0, =__main
|
||||
110 0000000C 4700 BX R0
|
||||
111 0000000E
|
||||
112 0000000E ENDP
|
||||
113 0000000E
|
||||
114 0000000E ; Dummy Exception Handlers (infinite loops which can be
|
||||
modified)
|
||||
115 0000000E NMI_Handler
|
||||
PROC
|
||||
116 0000000E EXPORT NMI_Handler [WEAK
|
||||
]
|
||||
117 0000000E E7FE B .
|
||||
118 00000010 ENDP
|
||||
119 00000010
|
||||
120 00000010
|
||||
122 00000010 HardFault_Handler
|
||||
PROC
|
||||
123 00000010 EXPORT HardFault_Handler [WEAK
|
||||
]
|
||||
124 00000010 E7FE B .
|
||||
125 00000012 ENDP
|
||||
127 00000012 MemManage_Handler
|
||||
PROC
|
||||
128 00000012 EXPORT MemManage_Handler [WEAK
|
||||
]
|
||||
129 00000012 E7FE B .
|
||||
130 00000014 ENDP
|
||||
132 00000014 BusFault_Handler
|
||||
PROC
|
||||
133 00000014 EXPORT BusFault_Handler [WEAK
|
||||
]
|
||||
134 00000014 E7FE B .
|
||||
135 00000016 ENDP
|
||||
137 00000016 UsageFault_Handler
|
||||
PROC
|
||||
138 00000016 EXPORT UsageFault_Handler [WEAK
|
||||
]
|
||||
139 00000016 E7FE B .
|
||||
140 00000018 ENDP
|
||||
141 00000018 SVC_Handler
|
||||
PROC
|
||||
|
||||
|
||||
|
||||
ARM Macro Assembler Page 4
|
||||
|
||||
|
||||
142 00000018 EXPORT SVC_Handler [WEAK
|
||||
]
|
||||
143 00000018 E7FE B .
|
||||
144 0000001A ENDP
|
||||
146 0000001A DebugMon_Handler
|
||||
PROC
|
||||
147 0000001A EXPORT DebugMon_Handler [WEAK
|
||||
]
|
||||
148 0000001A E7FE B .
|
||||
149 0000001C ENDP
|
||||
150 0000001C
|
||||
151 0000001C Default_Handler
|
||||
PROC
|
||||
152 0000001C EXPORT BLE_Handler [WEAK
|
||||
]
|
||||
153 0000001C EXPORT DMA_Handler [WE
|
||||
AK]
|
||||
154 0000001C EXPORT CPR_Handler [WEAK]
|
||||
155 0000001C EXPORT GPIO_Handler [WEAK]
|
||||
156 0000001C EXPORT RTC_Handler [WEAK]
|
||||
157 0000001C EXPORT TIMER0_Handler [WEAK]
|
||||
158 0000001C EXPORT TIMER1_Handler [WEAK]
|
||||
159 0000001C EXPORT TIMER2_Handler [WEAK]
|
||||
160 0000001C EXPORT TIMER3_Handler [WEAK]
|
||||
161 0000001C EXPORT WDT_Handler [WE
|
||||
AK]
|
||||
162 0000001C EXPORT I2C_Handler [WEAK]
|
||||
163 0000001C EXPORT UART0_Handler [WEAK
|
||||
]
|
||||
164 0000001C EXPORT UART1_Handler [WE
|
||||
AK]
|
||||
165 0000001C EXPORT SPI0_Handler [WE
|
||||
AK]
|
||||
166 0000001C EXPORT SPI1_Handler [WE
|
||||
AK]
|
||||
167 0000001C ;EXPORT KBS_Handler [WEAK]
|
||||
168 0000001C ;EXPORT QDEC_Handler [WEAK]
|
||||
169 0000001C EXPORT GADC_Handler [WEAK]
|
||||
170 0000001C EXPORT PWM_Handler [WE
|
||||
AK]
|
||||
171 0000001C EXPORT AES_Handler [WE
|
||||
AK]
|
||||
172 0000001C
|
||||
173 0000001C EXPORT PendSV_Handler [WEAK]
|
||||
174 0000001C EXPORT SysTick_Handler [WE
|
||||
AK]
|
||||
175 0000001C
|
||||
176 0000001C EXPORT USB_Handler [WE
|
||||
AK]
|
||||
;20
|
||||
177 0000001C EXPORT AUDIO_Handler [WE
|
||||
AK]
|
||||
;21
|
||||
178 0000001C EXPORT RF24G_Handler [WE
|
||||
AK]
|
||||
;22
|
||||
179 0000001C EXPORT SPI2_Handler [WE
|
||||
AK]
|
||||
;23
|
||||
|
||||
|
||||
|
||||
ARM Macro Assembler Page 5
|
||||
|
||||
|
||||
180 0000001C ;EXPORT MPU_Handler [WEAK];24
|
||||
181 0000001C EXPORT UART2_Handler [WE
|
||||
AK]
|
||||
;25
|
||||
182 0000001C EXPORT I2S_Handler [WE
|
||||
AK]
|
||||
;26
|
||||
183 0000001C EXPORT AOTIMER0_Handler [WE
|
||||
AK]
|
||||
;27
|
||||
184 0000001C EXPORT AOTIMER1_Handler [WE
|
||||
AK]
|
||||
;28
|
||||
185 0000001C EXPORT CMP_Handler [WE
|
||||
AK]
|
||||
;29
|
||||
186 0000001C EXPORT FMC_Handler [WE
|
||||
AK]
|
||||
;30
|
||||
187 0000001C EXPORT CAN_Handler [WE
|
||||
AK]
|
||||
;31
|
||||
188 0000001C
|
||||
189 0000001C PendSV_Handler
|
||||
190 0000001C SysTick_Handler
|
||||
191 0000001C BLE_Handler
|
||||
192 0000001C RF24G_Handler
|
||||
193 0000001C DMA_Handler
|
||||
194 0000001C CPR_Handler
|
||||
195 0000001C GPIO_Handler
|
||||
196 0000001C RTC_Handler
|
||||
197 0000001C TIMER0_Handler
|
||||
198 0000001C TIMER1_Handler
|
||||
199 0000001C TIMER2_Handler
|
||||
200 0000001C TIMER3_Handler
|
||||
201 0000001C WDT_Handler
|
||||
202 0000001C I2C_Handler
|
||||
203 0000001C I2S_Handler
|
||||
204 0000001C UART0_Handler
|
||||
205 0000001C UART1_Handler
|
||||
206 0000001C UART2_Handler
|
||||
207 0000001C SPI0_Handler
|
||||
208 0000001C SPI1_Handler
|
||||
209 0000001C SPI2_Handler
|
||||
210 0000001C ;KBS_Handler
|
||||
211 0000001C ;QDEC_Handler
|
||||
212 0000001C GADC_Handler
|
||||
213 0000001C PWM_Handler
|
||||
214 0000001C AUDIO_Handler
|
||||
215 0000001C ;SIM_Handler
|
||||
216 0000001C AES_Handler
|
||||
217 0000001C AOTIMER0_Handler
|
||||
218 0000001C AOTIMER1_Handler
|
||||
219 0000001C CMP_Handler
|
||||
220 0000001C FMC_Handler
|
||||
221 0000001C CAN_Handler
|
||||
222 0000001C USB_Handler
|
||||
223 0000001C
|
||||
224 0000001C E7FE B .
|
||||
|
||||
|
||||
|
||||
ARM Macro Assembler Page 6
|
||||
|
||||
|
||||
225 0000001E ENDP
|
||||
226 0000001E
|
||||
227 0000001E
|
||||
228 0000001E 00 00 ALIGN
|
||||
229 00000020
|
||||
230 00000020 ; User Initial Stack & Heap
|
||||
231 00000020
|
||||
232 00000020 IMPORT __use_two_region_memory
|
||||
233 00000020 EXPORT __user_initial_stackheap
|
||||
234 00000020 __user_initial_stackheap
|
||||
235 00000020
|
||||
236 00000020 4806 LDR R0, = Heap_Mem
|
||||
237 00000022 4907 LDR R1, = (Stack_Mem + Stack_Size)
|
||||
238 00000024 4A05 LDR R2, = (Heap_Mem + Heap_Size)
|
||||
239 00000026 4B07 LDR R3, = Stack_Mem
|
||||
240 00000028 4770 BX LR
|
||||
241 0000002A
|
||||
242 0000002A 00 00 ALIGN
|
||||
243 0000002C
|
||||
244 0000002C END
|
||||
4000013C
|
||||
10000001
|
||||
00000000
|
||||
00000000
|
||||
00000000
|
||||
00000800
|
||||
00000000
|
||||
Command Line: --debug --xref --diag_suppress=9931 --cpu=Cortex-M0 --apcs=interw
|
||||
ork --depend=.\objects\startup_xinc.d -o.\objects\startup_xinc.o -I"D:\Program
|
||||
Files\Keil_v5\ARM\Packs\ARM\CMSIS\5.9.0\Device\ARM\ARMCM0\Include" --predefine=
|
||||
"__UVISION_VERSION SETA 538" --predefine="ARMCM0 SETA 1" --list=.\listings\star
|
||||
tup_xinc.lst ..\app\src\startup_xinc.s
|
||||
|
||||
|
||||
|
||||
ARM Macro Assembler Page 1 Alphabetic symbol ordering
|
||||
Relocatable symbols
|
||||
|
||||
STACK 00000000
|
||||
|
||||
Symbol: STACK
|
||||
Definitions
|
||||
At line 10 in file ..\app\src\startup_xinc.s
|
||||
Uses
|
||||
None
|
||||
Comment: STACK unused
|
||||
Stack_Mem 00000000
|
||||
|
||||
Symbol: Stack_Mem
|
||||
Definitions
|
||||
At line 11 in file ..\app\src\startup_xinc.s
|
||||
Uses
|
||||
At line 237 in file ..\app\src\startup_xinc.s
|
||||
At line 239 in file ..\app\src\startup_xinc.s
|
||||
|
||||
__initial_sp 00000800
|
||||
|
||||
Symbol: __initial_sp
|
||||
Definitions
|
||||
At line 12 in file ..\app\src\startup_xinc.s
|
||||
Uses
|
||||
At line 32 in file ..\app\src\startup_xinc.s
|
||||
Comment: __initial_sp used once
|
||||
3 symbols
|
||||
|
||||
|
||||
|
||||
ARM Macro Assembler Page 1 Alphabetic symbol ordering
|
||||
Relocatable symbols
|
||||
|
||||
HEAP 00000000
|
||||
|
||||
Symbol: HEAP
|
||||
Definitions
|
||||
At line 16 in file ..\app\src\startup_xinc.s
|
||||
Uses
|
||||
None
|
||||
Comment: HEAP unused
|
||||
Heap_Mem 00000000
|
||||
|
||||
Symbol: Heap_Mem
|
||||
Definitions
|
||||
At line 18 in file ..\app\src\startup_xinc.s
|
||||
Uses
|
||||
At line 236 in file ..\app\src\startup_xinc.s
|
||||
At line 238 in file ..\app\src\startup_xinc.s
|
||||
|
||||
__heap_base 00000000
|
||||
|
||||
Symbol: __heap_base
|
||||
Definitions
|
||||
At line 17 in file ..\app\src\startup_xinc.s
|
||||
Uses
|
||||
None
|
||||
Comment: __heap_base unused
|
||||
__heap_limit 00000000
|
||||
|
||||
Symbol: __heap_limit
|
||||
Definitions
|
||||
At line 19 in file ..\app\src\startup_xinc.s
|
||||
Uses
|
||||
None
|
||||
Comment: __heap_limit unused
|
||||
4 symbols
|
||||
|
||||
|
||||
|
||||
ARM Macro Assembler Page 1 Alphabetic symbol ordering
|
||||
Relocatable symbols
|
||||
|
||||
RESET 00000000
|
||||
|
||||
Symbol: RESET
|
||||
Definitions
|
||||
At line 27 in file ..\app\src\startup_xinc.s
|
||||
Uses
|
||||
None
|
||||
Comment: RESET unused
|
||||
__Vectors 00000000
|
||||
|
||||
Symbol: __Vectors
|
||||
Definitions
|
||||
At line 32 in file ..\app\src\startup_xinc.s
|
||||
Uses
|
||||
At line 28 in file ..\app\src\startup_xinc.s
|
||||
At line 86 in file ..\app\src\startup_xinc.s
|
||||
|
||||
__Vectors_End 000000C0
|
||||
|
||||
Symbol: __Vectors_End
|
||||
Definitions
|
||||
At line 84 in file ..\app\src\startup_xinc.s
|
||||
Uses
|
||||
At line 29 in file ..\app\src\startup_xinc.s
|
||||
At line 86 in file ..\app\src\startup_xinc.s
|
||||
|
||||
3 symbols
|
||||
|
||||
|
||||
|
||||
ARM Macro Assembler Page 1 Alphabetic symbol ordering
|
||||
Relocatable symbols
|
||||
|
||||
.text 00000000
|
||||
|
||||
Symbol: .text
|
||||
Definitions
|
||||
At line 90 in file ..\app\src\startup_xinc.s
|
||||
Uses
|
||||
None
|
||||
Comment: .text unused
|
||||
AES_Handler 0000001C
|
||||
|
||||
Symbol: AES_Handler
|
||||
Definitions
|
||||
At line 216 in file ..\app\src\startup_xinc.s
|
||||
Uses
|
||||
At line 70 in file ..\app\src\startup_xinc.s
|
||||
At line 171 in file ..\app\src\startup_xinc.s
|
||||
|
||||
AOTIMER0_Handler 0000001C
|
||||
|
||||
Symbol: AOTIMER0_Handler
|
||||
Definitions
|
||||
At line 217 in file ..\app\src\startup_xinc.s
|
||||
Uses
|
||||
At line 78 in file ..\app\src\startup_xinc.s
|
||||
At line 183 in file ..\app\src\startup_xinc.s
|
||||
|
||||
AOTIMER1_Handler 0000001C
|
||||
|
||||
Symbol: AOTIMER1_Handler
|
||||
Definitions
|
||||
At line 218 in file ..\app\src\startup_xinc.s
|
||||
Uses
|
||||
At line 79 in file ..\app\src\startup_xinc.s
|
||||
At line 184 in file ..\app\src\startup_xinc.s
|
||||
|
||||
AUDIO_Handler 0000001C
|
||||
|
||||
Symbol: AUDIO_Handler
|
||||
Definitions
|
||||
At line 214 in file ..\app\src\startup_xinc.s
|
||||
Uses
|
||||
At line 72 in file ..\app\src\startup_xinc.s
|
||||
At line 177 in file ..\app\src\startup_xinc.s
|
||||
|
||||
BLE_Handler 0000001C
|
||||
|
||||
Symbol: BLE_Handler
|
||||
Definitions
|
||||
At line 191 in file ..\app\src\startup_xinc.s
|
||||
Uses
|
||||
At line 51 in file ..\app\src\startup_xinc.s
|
||||
At line 152 in file ..\app\src\startup_xinc.s
|
||||
|
||||
BusFault_Handler 00000014
|
||||
|
||||
Symbol: BusFault_Handler
|
||||
Definitions
|
||||
At line 132 in file ..\app\src\startup_xinc.s
|
||||
Uses
|
||||
|
||||
|
||||
|
||||
ARM Macro Assembler Page 2 Alphabetic symbol ordering
|
||||
Relocatable symbols
|
||||
|
||||
At line 37 in file ..\app\src\startup_xinc.s
|
||||
At line 133 in file ..\app\src\startup_xinc.s
|
||||
|
||||
CAN_Handler 0000001C
|
||||
|
||||
Symbol: CAN_Handler
|
||||
Definitions
|
||||
At line 221 in file ..\app\src\startup_xinc.s
|
||||
Uses
|
||||
At line 82 in file ..\app\src\startup_xinc.s
|
||||
At line 187 in file ..\app\src\startup_xinc.s
|
||||
|
||||
CMP_Handler 0000001C
|
||||
|
||||
Symbol: CMP_Handler
|
||||
Definitions
|
||||
At line 219 in file ..\app\src\startup_xinc.s
|
||||
Uses
|
||||
At line 80 in file ..\app\src\startup_xinc.s
|
||||
At line 185 in file ..\app\src\startup_xinc.s
|
||||
|
||||
CPR_Handler 0000001C
|
||||
|
||||
Symbol: CPR_Handler
|
||||
Definitions
|
||||
At line 194 in file ..\app\src\startup_xinc.s
|
||||
Uses
|
||||
At line 53 in file ..\app\src\startup_xinc.s
|
||||
At line 154 in file ..\app\src\startup_xinc.s
|
||||
|
||||
DMA_Handler 0000001C
|
||||
|
||||
Symbol: DMA_Handler
|
||||
Definitions
|
||||
At line 193 in file ..\app\src\startup_xinc.s
|
||||
Uses
|
||||
At line 52 in file ..\app\src\startup_xinc.s
|
||||
At line 153 in file ..\app\src\startup_xinc.s
|
||||
|
||||
DebugMon_Handler 0000001A
|
||||
|
||||
Symbol: DebugMon_Handler
|
||||
Definitions
|
||||
At line 146 in file ..\app\src\startup_xinc.s
|
||||
Uses
|
||||
At line 44 in file ..\app\src\startup_xinc.s
|
||||
At line 147 in file ..\app\src\startup_xinc.s
|
||||
|
||||
Default_Handler 0000001C
|
||||
|
||||
Symbol: Default_Handler
|
||||
Definitions
|
||||
At line 151 in file ..\app\src\startup_xinc.s
|
||||
Uses
|
||||
None
|
||||
Comment: Default_Handler unused
|
||||
FMC_Handler 0000001C
|
||||
|
||||
Symbol: FMC_Handler
|
||||
|
||||
|
||||
|
||||
ARM Macro Assembler Page 3 Alphabetic symbol ordering
|
||||
Relocatable symbols
|
||||
|
||||
Definitions
|
||||
At line 220 in file ..\app\src\startup_xinc.s
|
||||
Uses
|
||||
At line 81 in file ..\app\src\startup_xinc.s
|
||||
At line 186 in file ..\app\src\startup_xinc.s
|
||||
|
||||
GADC_Handler 0000001C
|
||||
|
||||
Symbol: GADC_Handler
|
||||
Definitions
|
||||
At line 212 in file ..\app\src\startup_xinc.s
|
||||
Uses
|
||||
At line 68 in file ..\app\src\startup_xinc.s
|
||||
At line 169 in file ..\app\src\startup_xinc.s
|
||||
|
||||
GPIO_Handler 0000001C
|
||||
|
||||
Symbol: GPIO_Handler
|
||||
Definitions
|
||||
At line 195 in file ..\app\src\startup_xinc.s
|
||||
Uses
|
||||
At line 54 in file ..\app\src\startup_xinc.s
|
||||
At line 155 in file ..\app\src\startup_xinc.s
|
||||
|
||||
HardFault_Handler 00000010
|
||||
|
||||
Symbol: HardFault_Handler
|
||||
Definitions
|
||||
At line 122 in file ..\app\src\startup_xinc.s
|
||||
Uses
|
||||
At line 35 in file ..\app\src\startup_xinc.s
|
||||
At line 123 in file ..\app\src\startup_xinc.s
|
||||
|
||||
I2C_Handler 0000001C
|
||||
|
||||
Symbol: I2C_Handler
|
||||
Definitions
|
||||
At line 202 in file ..\app\src\startup_xinc.s
|
||||
Uses
|
||||
At line 61 in file ..\app\src\startup_xinc.s
|
||||
At line 162 in file ..\app\src\startup_xinc.s
|
||||
|
||||
I2S_Handler 0000001C
|
||||
|
||||
Symbol: I2S_Handler
|
||||
Definitions
|
||||
At line 203 in file ..\app\src\startup_xinc.s
|
||||
Uses
|
||||
At line 77 in file ..\app\src\startup_xinc.s
|
||||
At line 182 in file ..\app\src\startup_xinc.s
|
||||
|
||||
MemManage_Handler 00000012
|
||||
|
||||
Symbol: MemManage_Handler
|
||||
Definitions
|
||||
At line 127 in file ..\app\src\startup_xinc.s
|
||||
Uses
|
||||
At line 36 in file ..\app\src\startup_xinc.s
|
||||
At line 128 in file ..\app\src\startup_xinc.s
|
||||
|
||||
|
||||
|
||||
ARM Macro Assembler Page 4 Alphabetic symbol ordering
|
||||
Relocatable symbols
|
||||
|
||||
|
||||
NMI_Handler 0000000E
|
||||
|
||||
Symbol: NMI_Handler
|
||||
Definitions
|
||||
At line 115 in file ..\app\src\startup_xinc.s
|
||||
Uses
|
||||
At line 34 in file ..\app\src\startup_xinc.s
|
||||
At line 116 in file ..\app\src\startup_xinc.s
|
||||
|
||||
PWM_Handler 0000001C
|
||||
|
||||
Symbol: PWM_Handler
|
||||
Definitions
|
||||
At line 213 in file ..\app\src\startup_xinc.s
|
||||
Uses
|
||||
At line 69 in file ..\app\src\startup_xinc.s
|
||||
At line 170 in file ..\app\src\startup_xinc.s
|
||||
|
||||
PendSV_Handler 0000001C
|
||||
|
||||
Symbol: PendSV_Handler
|
||||
Definitions
|
||||
At line 189 in file ..\app\src\startup_xinc.s
|
||||
Uses
|
||||
At line 46 in file ..\app\src\startup_xinc.s
|
||||
At line 173 in file ..\app\src\startup_xinc.s
|
||||
|
||||
RF24G_Handler 0000001C
|
||||
|
||||
Symbol: RF24G_Handler
|
||||
Definitions
|
||||
At line 192 in file ..\app\src\startup_xinc.s
|
||||
Uses
|
||||
At line 73 in file ..\app\src\startup_xinc.s
|
||||
At line 178 in file ..\app\src\startup_xinc.s
|
||||
|
||||
RTC_Handler 0000001C
|
||||
|
||||
Symbol: RTC_Handler
|
||||
Definitions
|
||||
At line 196 in file ..\app\src\startup_xinc.s
|
||||
Uses
|
||||
At line 55 in file ..\app\src\startup_xinc.s
|
||||
At line 156 in file ..\app\src\startup_xinc.s
|
||||
|
||||
Reset_Handler 00000000
|
||||
|
||||
Symbol: Reset_Handler
|
||||
Definitions
|
||||
At line 93 in file ..\app\src\startup_xinc.s
|
||||
Uses
|
||||
At line 33 in file ..\app\src\startup_xinc.s
|
||||
At line 95 in file ..\app\src\startup_xinc.s
|
||||
|
||||
SPI0_Handler 0000001C
|
||||
|
||||
Symbol: SPI0_Handler
|
||||
Definitions
|
||||
|
||||
|
||||
|
||||
ARM Macro Assembler Page 5 Alphabetic symbol ordering
|
||||
Relocatable symbols
|
||||
|
||||
At line 207 in file ..\app\src\startup_xinc.s
|
||||
Uses
|
||||
At line 64 in file ..\app\src\startup_xinc.s
|
||||
At line 165 in file ..\app\src\startup_xinc.s
|
||||
|
||||
SPI1_Handler 0000001C
|
||||
|
||||
Symbol: SPI1_Handler
|
||||
Definitions
|
||||
At line 208 in file ..\app\src\startup_xinc.s
|
||||
Uses
|
||||
At line 65 in file ..\app\src\startup_xinc.s
|
||||
At line 166 in file ..\app\src\startup_xinc.s
|
||||
|
||||
SPI2_Handler 0000001C
|
||||
|
||||
Symbol: SPI2_Handler
|
||||
Definitions
|
||||
At line 209 in file ..\app\src\startup_xinc.s
|
||||
Uses
|
||||
At line 74 in file ..\app\src\startup_xinc.s
|
||||
At line 179 in file ..\app\src\startup_xinc.s
|
||||
|
||||
SVC_Handler 00000018
|
||||
|
||||
Symbol: SVC_Handler
|
||||
Definitions
|
||||
At line 141 in file ..\app\src\startup_xinc.s
|
||||
Uses
|
||||
At line 43 in file ..\app\src\startup_xinc.s
|
||||
At line 142 in file ..\app\src\startup_xinc.s
|
||||
|
||||
SysTick_Handler 0000001C
|
||||
|
||||
Symbol: SysTick_Handler
|
||||
Definitions
|
||||
At line 190 in file ..\app\src\startup_xinc.s
|
||||
Uses
|
||||
At line 47 in file ..\app\src\startup_xinc.s
|
||||
At line 174 in file ..\app\src\startup_xinc.s
|
||||
|
||||
TIMER0_Handler 0000001C
|
||||
|
||||
Symbol: TIMER0_Handler
|
||||
Definitions
|
||||
At line 197 in file ..\app\src\startup_xinc.s
|
||||
Uses
|
||||
At line 56 in file ..\app\src\startup_xinc.s
|
||||
At line 157 in file ..\app\src\startup_xinc.s
|
||||
|
||||
TIMER1_Handler 0000001C
|
||||
|
||||
Symbol: TIMER1_Handler
|
||||
Definitions
|
||||
At line 198 in file ..\app\src\startup_xinc.s
|
||||
Uses
|
||||
At line 57 in file ..\app\src\startup_xinc.s
|
||||
At line 158 in file ..\app\src\startup_xinc.s
|
||||
|
||||
|
||||
|
||||
|
||||
ARM Macro Assembler Page 6 Alphabetic symbol ordering
|
||||
Relocatable symbols
|
||||
|
||||
TIMER2_Handler 0000001C
|
||||
|
||||
Symbol: TIMER2_Handler
|
||||
Definitions
|
||||
At line 199 in file ..\app\src\startup_xinc.s
|
||||
Uses
|
||||
At line 58 in file ..\app\src\startup_xinc.s
|
||||
At line 159 in file ..\app\src\startup_xinc.s
|
||||
|
||||
TIMER3_Handler 0000001C
|
||||
|
||||
Symbol: TIMER3_Handler
|
||||
Definitions
|
||||
At line 200 in file ..\app\src\startup_xinc.s
|
||||
Uses
|
||||
At line 59 in file ..\app\src\startup_xinc.s
|
||||
At line 160 in file ..\app\src\startup_xinc.s
|
||||
|
||||
UART0_Handler 0000001C
|
||||
|
||||
Symbol: UART0_Handler
|
||||
Definitions
|
||||
At line 204 in file ..\app\src\startup_xinc.s
|
||||
Uses
|
||||
At line 62 in file ..\app\src\startup_xinc.s
|
||||
At line 163 in file ..\app\src\startup_xinc.s
|
||||
|
||||
UART1_Handler 0000001C
|
||||
|
||||
Symbol: UART1_Handler
|
||||
Definitions
|
||||
At line 205 in file ..\app\src\startup_xinc.s
|
||||
Uses
|
||||
At line 63 in file ..\app\src\startup_xinc.s
|
||||
At line 164 in file ..\app\src\startup_xinc.s
|
||||
|
||||
UART2_Handler 0000001C
|
||||
|
||||
Symbol: UART2_Handler
|
||||
Definitions
|
||||
At line 206 in file ..\app\src\startup_xinc.s
|
||||
Uses
|
||||
At line 76 in file ..\app\src\startup_xinc.s
|
||||
At line 181 in file ..\app\src\startup_xinc.s
|
||||
|
||||
USB_Handler 0000001C
|
||||
|
||||
Symbol: USB_Handler
|
||||
Definitions
|
||||
At line 222 in file ..\app\src\startup_xinc.s
|
||||
Uses
|
||||
At line 71 in file ..\app\src\startup_xinc.s
|
||||
At line 176 in file ..\app\src\startup_xinc.s
|
||||
|
||||
UsageFault_Handler 00000016
|
||||
|
||||
Symbol: UsageFault_Handler
|
||||
Definitions
|
||||
At line 137 in file ..\app\src\startup_xinc.s
|
||||
|
||||
|
||||
|
||||
ARM Macro Assembler Page 7 Alphabetic symbol ordering
|
||||
Relocatable symbols
|
||||
|
||||
Uses
|
||||
At line 38 in file ..\app\src\startup_xinc.s
|
||||
At line 138 in file ..\app\src\startup_xinc.s
|
||||
|
||||
WDT_Handler 0000001C
|
||||
|
||||
Symbol: WDT_Handler
|
||||
Definitions
|
||||
At line 201 in file ..\app\src\startup_xinc.s
|
||||
Uses
|
||||
At line 60 in file ..\app\src\startup_xinc.s
|
||||
At line 161 in file ..\app\src\startup_xinc.s
|
||||
|
||||
__user_initial_stackheap 00000020
|
||||
|
||||
Symbol: __user_initial_stackheap
|
||||
Definitions
|
||||
At line 234 in file ..\app\src\startup_xinc.s
|
||||
Uses
|
||||
At line 233 in file ..\app\src\startup_xinc.s
|
||||
Comment: __user_initial_stackheap used once
|
||||
42 symbols
|
||||
|
||||
|
||||
|
||||
ARM Macro Assembler Page 1 Alphabetic symbol ordering
|
||||
Absolute symbols
|
||||
|
||||
Heap_Size 00000000
|
||||
|
||||
Symbol: Heap_Size
|
||||
Definitions
|
||||
At line 14 in file ..\app\src\startup_xinc.s
|
||||
Uses
|
||||
At line 18 in file ..\app\src\startup_xinc.s
|
||||
At line 238 in file ..\app\src\startup_xinc.s
|
||||
|
||||
Stack_Size 00000800
|
||||
|
||||
Symbol: Stack_Size
|
||||
Definitions
|
||||
At line 8 in file ..\app\src\startup_xinc.s
|
||||
Uses
|
||||
At line 11 in file ..\app\src\startup_xinc.s
|
||||
At line 237 in file ..\app\src\startup_xinc.s
|
||||
|
||||
__Vectors_Size 000000C0
|
||||
|
||||
Symbol: __Vectors_Size
|
||||
Definitions
|
||||
At line 86 in file ..\app\src\startup_xinc.s
|
||||
Uses
|
||||
At line 30 in file ..\app\src\startup_xinc.s
|
||||
Comment: __Vectors_Size used once
|
||||
3 symbols
|
||||
|
||||
|
||||
|
||||
ARM Macro Assembler Page 1 Alphabetic symbol ordering
|
||||
External symbols
|
||||
|
||||
SystemInit 00000000
|
||||
|
||||
Symbol: SystemInit
|
||||
Definitions
|
||||
At line 97 in file ..\app\src\startup_xinc.s
|
||||
Uses
|
||||
At line 106 in file ..\app\src\startup_xinc.s
|
||||
Comment: SystemInit used once
|
||||
__main 00000000
|
||||
|
||||
Symbol: __main
|
||||
Definitions
|
||||
At line 98 in file ..\app\src\startup_xinc.s
|
||||
Uses
|
||||
At line 109 in file ..\app\src\startup_xinc.s
|
||||
Comment: __main used once
|
||||
__use_two_region_memory 00000000
|
||||
|
||||
Symbol: __use_two_region_memory
|
||||
Definitions
|
||||
At line 232 in file ..\app\src\startup_xinc.s
|
||||
Uses
|
||||
None
|
||||
Comment: __use_two_region_memory unused
|
||||
3 symbols
|
||||
392 symbols in table
|
||||
@@ -0,0 +1,2 @@
|
||||
[EXTDLL]
|
||||
Count=0
|
||||
Binary file not shown.
@@ -0,0 +1,129 @@
|
||||
<html>
|
||||
<body>
|
||||
<pre>
|
||||
<h1>礦ision Build Log</h1>
|
||||
<h2>Tool Versions:</h2>
|
||||
IDE-Version: μVision V5.38.0.0
|
||||
Copyright (C) 2022 ARM Ltd and ARM Germany GmbH. All rights reserved.
|
||||
License Information: 1 850080437@qq.com, 1, LIC=NQQMA-13CNA-CXTU6-D7Z3Q-D9AMV-Y9G1D
|
||||
|
||||
Tool Versions:
|
||||
Toolchain: MDK-ARM Plus Version: 5.38.0.0
|
||||
Toolchain Path: D:\Program Files\Keil_v5\ARM\ARMCC\Bin
|
||||
C Compiler: Armcc.exe V5.06 update 6 (build 750)
|
||||
Assembler: Armasm.exe V5.06 update 6 (build 750)
|
||||
Linker/Locator: ArmLink.exe V5.06 update 6 (build 750)
|
||||
Library Manager: ArmAr.exe V5.06 update 6 (build 750)
|
||||
Hex Converter: FromElf.exe V5.06 update 6 (build 750)
|
||||
CPU DLL: SARMCM3.DLL V5.38.0.0
|
||||
Dialog DLL: DARMCM1.DLL V1.19.6.0
|
||||
Target DLL: UL2CM3.DLL V1.164.8.0
|
||||
Dialog DLL: TARMCM1.DLL V1.14.6.0
|
||||
|
||||
<h2>Project:</h2>
|
||||
D:\workplace\工作文件\程序\新向远XC6517蓝牙芯片\IR_RGB\project\example\ble\ble_peripheral\mdk\ble_peripheral.uvprojx
|
||||
Project File Date: 06/07/2024
|
||||
|
||||
<h2>Output:</h2>
|
||||
*** Using Compiler 'V5.06 update 6 (build 750)', folder: 'D:\Program Files\Keil_v5\ARM\ARMCC\Bin'
|
||||
Build target 'ble-sdk-xip'
|
||||
Note: source file '..\..\..\..\..\component\ble\plf\refip\src\driver\uart\uart.c' - object file renamed from '.\Objects\uart.o' to '.\Objects\uart_1.o'.
|
||||
compiling arch_main.c...
|
||||
..\app\src\arch_main.c(103): warning: #188-D: enumerated type mixed with another type
|
||||
xc_gpio_write_pin(4, 1);
|
||||
..\app\src\arch_main.c(104): warning: #188-D: enumerated type mixed with another type
|
||||
xc_gpio_write_pin(4, 0);
|
||||
..\app\src\arch_main.c(106): warning: #188-D: enumerated type mixed with another type
|
||||
xc_gpio_write_pin(4, 1);
|
||||
..\app\src\arch_main.c(107): warning: #188-D: enumerated type mixed with another type
|
||||
xc_gpio_write_pin(4, 0);
|
||||
..\app\src\arch_main.c(165): warning: #144-D: a value of type "int" cannot be used to initialize an entity of type "uint8_t *"
|
||||
uint8_t *ptr = 0x10001400;
|
||||
..\app\src\arch_main.c(165): warning: #152-D: conversion of nonzero integer to pointer
|
||||
uint8_t *ptr = 0x10001400;
|
||||
..\app\src\arch_main.c(168): warning: #513-D: a value of type "uint32_t *" cannot be assigned to an entity of type "uint8_t *"
|
||||
ptr = (uint32_t *)(0x10000800);
|
||||
..\app\src\arch_main.c(255): warning: #223-D: function "app_ir_init" declared implicitly
|
||||
app_ir_init();
|
||||
..\app\src\arch_main.c(256): warning: #223-D: function "app_key_init" declared implicitly
|
||||
app_key_init();
|
||||
..\app\src\arch_main.c(262): warning: #223-D: function "app_pwm_init" declared implicitly
|
||||
app_pwm_init();
|
||||
..\app\src\arch_main.c(263): warning: #223-D: function "timer0_2_init" declared implicitly
|
||||
timer0_2_init();
|
||||
..\app\src\arch_main.c(275): warning: #223-D: function "xc_ota_schedule" declared implicitly
|
||||
xc_ota_schedule();
|
||||
..\app\src\arch_main.c(286): warning: #223-D: function "ble_message_process" declared implicitly
|
||||
ble_message_process();//BLE接收信息处理
|
||||
..\app\src\arch_main.c(287): warning: #223-D: function "ir_message_process" declared implicitly
|
||||
ir_message_process();//ir遥控按键处理
|
||||
..\app\src\arch_main.c(288): warning: #223-D: function "key_message_process" declared implicitly
|
||||
key_message_process(app_key_message_get());//按键检测处理
|
||||
..\app\src\arch_main.c(288): warning: #223-D: function "app_key_message_get" declared implicitly
|
||||
key_message_process(app_key_message_get());//按键检测处理
|
||||
..\app\src\arch_main.c(289): warning: #223-D: function "app_record_process" declared implicitly
|
||||
app_record_process();//ADC_MIC检测处理
|
||||
..\app\src\arch_main.c: 17 warnings, 0 errors
|
||||
compiling rgblight.c...
|
||||
..\app\src\rgblight.c(298): warning: #186-D: pointless comparison of unsigned integer with zero
|
||||
if (mode >= MODE0)
|
||||
..\app\src\rgblight.c(341): warning: #223-D: function "app_audio_record_start" declared implicitly
|
||||
app_audio_record_start();
|
||||
..\app\src\rgblight.c(355): warning: #223-D: function "app_audio_record_stop" declared implicitly
|
||||
app_audio_record_stop();//关闭adc
|
||||
..\app\src\rgblight.c(804): warning: #1-D: last line of file ends without a newline
|
||||
#endif
|
||||
..\app\src\rgblight.c: 4 warnings, 0 errors
|
||||
linking...
|
||||
Program Size: Code=26308 RO-data=1300 RW-data=4468 ZI-data=7880
|
||||
After Build - User command #1: fromelf --bin --output=app.bin .\Objects\Xinc_ble_sdk.axf
|
||||
After Build - User command #2: .\output_tool\ge_ota.bat
|
||||
Size of file: 27788 bytes.
|
||||
dual_xip
|
||||
Addr:13000
|
||||
Size:0x6c8c
|
||||
BAddr:0x40000
|
||||
Acheck:0x81d55a20
|
||||
SoftVer:0x10
|
||||
RomVer:0x20
|
||||
LoadAddr:0x11013000
|
||||
Is xip ota?:1
|
||||
ota_data.bin success总有10个命令行参数
|
||||
可 执 行文 件 名:.\output_tool\xinchip_bootloader2_tool.exe
|
||||
第一个命令行参数[bootloader program ]:.\output_tool\boot2
|
||||
第二个命令行参数[APP1 program]:.\output_tool\host
|
||||
第三个命令行参数[load_addr: sector align]:0x11002000
|
||||
第四个命令行参数[1:active,0:invalid]:1
|
||||
第五个命令行参数[APP2 program]:app.bin
|
||||
第六个命令行参数[load_addr: sector align]:0x11013000
|
||||
第七个命令行参数[1:active,0:invalid]:0
|
||||
第八个命令行参数[生成的最终bin]:.\output_bin\ble_peripheral.bin
|
||||
第九个命令行参数[是否跑两个程序]:1
|
||||
src1=.\output_tool\boot2
|
||||
src2=.\output_tool\host
|
||||
src3=app.bin
|
||||
des=.\output_bin\ble_peripheral.bin
|
||||
laod_addr1=0x11002000
|
||||
laod_addr2=0x11013000
|
||||
status1=1
|
||||
status2=0
|
||||
需要填充0个sector
|
||||
updata file success !
|
||||
已复制 1 个文件。
|
||||
".\Objects\Xinc_ble_sdk.axf" - 0 Error(s), 21 Warning(s).
|
||||
|
||||
<h2>Software Packages used:</h2>
|
||||
|
||||
Package Vendor: ARM
|
||||
http://www.keil.com/pack/ARM.CMSIS.5.9.0.pack
|
||||
ARM.CMSIS.5.9.0
|
||||
CMSIS (Common Microcontroller Software Interface Standard)
|
||||
|
||||
<h2>Collection of Component include folders:</h2>
|
||||
D:/Program Files/Keil_v5/ARM/Packs/ARM/CMSIS/5.9.0/Device/ARM/ARMCM0/Include
|
||||
|
||||
<h2>Collection of Component Files used:</h2>
|
||||
Build Time Elapsed: 00:00:05
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,44 @@
|
||||
--cpu Cortex-M0
|
||||
".\objects\startup_xinc.o"
|
||||
".\objects\system_xinc.o"
|
||||
".\objects\app_batt.o"
|
||||
".\objects\app_task.o"
|
||||
".\objects\arch_main.o"
|
||||
".\objects\app_sec.o"
|
||||
"..\app\src\rom_symdefs.o"
|
||||
".\objects\sleep.o"
|
||||
".\objects\ota_server.o"
|
||||
".\objects\ota_flash_interface.o"
|
||||
".\objects\ota_protocol.o"
|
||||
".\objects\usr_server.o"
|
||||
".\objects\uart.o"
|
||||
".\objects\timer.o"
|
||||
".\objects\pwm.o"
|
||||
".\objects\rgblight.o"
|
||||
".\objects\nec_infrared.o"
|
||||
".\objects\pga_adc.o"
|
||||
".\objects\key.o"
|
||||
".\objects\message.o"
|
||||
".\objects\rf_extrc.o"
|
||||
".\objects\ringbuffer.o"
|
||||
".\objects\xc_drv_clock.o"
|
||||
".\objects\xc_drv_gpio.o"
|
||||
".\objects\xc_drv_pwr.o"
|
||||
".\objects\xc_drv_timer.o"
|
||||
".\objects\xc_drv_uart.o"
|
||||
".\objects\xc_drv_wdt.o"
|
||||
".\objects\xc_drv_systick.o"
|
||||
".\objects\xc_drv_fmc_spi.o"
|
||||
".\objects\xc_drv_calib.o"
|
||||
".\objects\xc_drv_pwm.o"
|
||||
".\objects\xc_drv_pga.o"
|
||||
".\objects\xc_drv_adc.o"
|
||||
".\objects\xc_gap_api.o"
|
||||
".\objects\xc_gatt_client_api.o"
|
||||
".\objects\xc_gatt_server_api.o"
|
||||
".\objects\nvds.o"
|
||||
".\objects\uart_1.o"
|
||||
--strict --scatter ".\Linker\cpu_xip.scat"
|
||||
--summary_stderr --info summarysizes --map --load_addr_map_info --xref --callgraph --symbols
|
||||
--info sizes --info totals --info unused --info veneers
|
||||
--list ".\Listings\Xinc_ble_sdk.map" -o .\Objects\Xinc_ble_sdk.axf
|
||||
Binary file not shown.
@@ -0,0 +1,132 @@
|
||||
.\objects\app_batt.o: ..\app\src\app_batt.c
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\modules\rwip\api\rwip_config.h
|
||||
.\objects\app_batt.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\string.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\ip\ble\ll\api\rwble_config.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\modules\rwip\api\rwip_config.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\ip\ble\hl\inc\rwble_hl_config.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\ip\ble\hl\api\rwble_hl_error.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\ip\ble\hl\inc\rwprf_config.h
|
||||
.\objects\app_batt.o: ..\app\api\rwapp_config.h
|
||||
.\objects\app_batt.o: ..\app\src\app_batt.h
|
||||
.\objects\app_batt.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\stdint.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\modules\ke\api\ke_task.h
|
||||
.\objects\app_batt.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\stdbool.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc6xxx.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc60xx.h
|
||||
.\objects\app_batt.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\stdio.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\core_cm0.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\core_cmInstr.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\core_cmFunc.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_conf.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_cpr.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_offset.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_cprao.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_rf.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_adc.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_aotimer.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc6xxx.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_dma.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_fmc.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_fmc_cache.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_gpio.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_i2c.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_qdec.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_pwm.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_pwm_comn.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_rtc.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\core_cm0.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_spi.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_timer.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_uart.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_wdt.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_pwm_timer.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_calib.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_clock.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_systick.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_pwr.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_gpio.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_aotimer.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_timer.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_rtc.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_uart.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\ringbuffer.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_dma.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_spi.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_spi_dma.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\modules\flash\xc6xxx_fmc_spi.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_fmc_spi_dma.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_uart_dma.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_i2c.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_sw_i2c.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_wdt.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_adc.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_pwm.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\modules\ke\api\ke_msg.h
|
||||
.\objects\app_batt.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\stddef.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\arch.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\ll\gnuarm\ll.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\arch.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\reg_intc.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_intc.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\plf\refip\src\driver\reg\reg_access.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\modules\common\api\co_utils.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\modules\common\api\co_bt.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\modules\common\api\co_bt_defines.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\modules\common\api\co_lmp.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\modules\common\api\co_bt.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\modules\common\api\co_hci.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\modules\common\api\co_error.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\modules\rwip\api\rwip.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\ip\em\api\em_map.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\modules\common\api\co_math.h
|
||||
.\objects\app_batt.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\stdlib.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_em_et.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\ip\ble\ll\api\em_map_ble.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\modules\common\api\co_llcp.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_em_ble_cs.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_em_ble_tx_desc.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_em_ble_rx_desc.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_em_ble_rx_cte_desc.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_em_ble_wpal.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_em_ble_ral.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\modules\common\api\co_list.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\app_batt.o: ..\app\api\app_task.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\modules\dbg\api\dbg.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\modules\dbg\api\dbg_swdiag.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\modules\dbg\api\dbg_trc.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\ip\ble\hl\src\gap\gapm\gapm_int.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\ip\ble\hl\api\gapm.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\ip\ble\hl\api\gapm_msg.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\modules\rwip\api\rwip_task.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\ip\ble\hl\api\gap.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\ip\ble\hl\src\gatt\gatt_msg_int.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\ip\ble\hl\api\gatt.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\ip\ble\hl\api\gatt_msg.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\ip\ble\hl\api\l2cap.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\ip\ble\hl\api\l2cap_msg.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\modules\common\api\co_buf.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\modules\ke\api\ke_mem.h
|
||||
.\objects\app_batt.o: ..\app\src\ota_server.h
|
||||
.\objects\app_batt.o: ..\app\api\app_task.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\ip\ble\api\xc_gatt_server_api.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\ip\ble\hl\src\gatt\gatt_db.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\ip\ble\api\xc_gap_api.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\ip\ble\hl\api\gapc_msg.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\modules\nvds\api\nvds.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\ip\ble\profiles\bas\bass\api\bass_msg.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\ip\ble\hl\api\prf_types.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\app_batt.o: ..\..\..\..\..\component\ble\ip\ble\hl\api\prf.h
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,136 @@
|
||||
.\objects\app_sec.o: ..\app\src\app_sec.c
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\modules\rwip\api\rwip_config.h
|
||||
.\objects\app_sec.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\string.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\ip\ble\ll\api\rwble_config.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\modules\rwip\api\rwip_config.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\ip\ble\hl\inc\rwble_hl_config.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\ip\ble\hl\api\rwble_hl_error.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\ip\ble\hl\inc\rwprf_config.h
|
||||
.\objects\app_sec.o: ..\app\api\rwapp_config.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\modules\common\api\co_utils.h
|
||||
.\objects\app_sec.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\stdint.h
|
||||
.\objects\app_sec.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\stddef.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\modules\common\api\co_bt.h
|
||||
.\objects\app_sec.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\stdbool.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\modules\common\api\co_bt_defines.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\modules\common\api\co_lmp.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\modules\common\api\co_bt.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\modules\common\api\co_hci.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc6xxx.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc60xx.h
|
||||
.\objects\app_sec.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\stdio.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\core_cm0.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\core_cmInstr.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\core_cmFunc.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_conf.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_cpr.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_offset.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_cprao.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_rf.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_adc.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_aotimer.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc6xxx.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_dma.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_fmc.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_fmc_cache.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_gpio.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_i2c.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_qdec.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_pwm.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_pwm_comn.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_rtc.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\core_cm0.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_spi.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_timer.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_uart.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_wdt.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_pwm_timer.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_calib.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_clock.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_systick.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_pwr.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_gpio.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_aotimer.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_timer.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_rtc.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_uart.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\ringbuffer.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_dma.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_spi.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_spi_dma.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\modules\flash\xc6xxx_fmc_spi.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_fmc_spi_dma.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_uart_dma.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_i2c.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_sw_i2c.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_wdt.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_adc.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_pwm.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\modules\common\api\co_error.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\modules\rwip\api\rwip.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\modules\common\api\co_math.h
|
||||
.\objects\app_sec.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\stdlib.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\arch.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\ll\gnuarm\ll.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\arch.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\reg_intc.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_intc.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\plf\refip\src\driver\reg\reg_access.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\ip\em\api\em_map.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\modules\common\api\co_math.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_em_et.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\ip\ble\ll\api\em_map_ble.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\modules\common\api\co_llcp.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_em_ble_cs.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_em_ble_tx_desc.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_em_ble_rx_desc.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_em_ble_rx_cte_desc.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_em_ble_wpal.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_em_ble_ral.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\ip\ble\hl\api\gap.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\ip\ble\hl\api\gapc.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\ip\ble\hl\api\gapc_msg.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\modules\rwip\api\rwip_task.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\ip\ble\hl\src\gap\gapc\gapc_int.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\ip\ble\hl\src\gap\gapc\../../inc/gap_hl_api.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\modules\common\api\co_list.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\modules\common\api\co_buf.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\modules\common\api\co_time.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\modules\common\api\co_djob.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\modules\ke\api\ke_task.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\modules\ke\api\ke_msg.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\ip\ble\hl\api\prf_types.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\ip\ble\hl\api\gatt.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\ip\ble\hl\api\gatt_msg.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\ip\ble\hl\api\l2cap.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\ip\ble\hl\api\l2cap_msg.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\app_sec.o: ..\app\src\app_sec.h
|
||||
.\objects\app_sec.o: ..\app\api\app_task.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\modules\dbg\api\dbg.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\modules\dbg\api\dbg_swdiag.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\modules\dbg\api\dbg_trc.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\ip\ble\hl\src\gap\gapm\gapm_int.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\ip\ble\hl\api\gapm.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\ip\ble\hl\api\gapm_msg.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\ip\ble\hl\src\gatt\gatt_msg_int.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\modules\ke\api\ke_mem.h
|
||||
.\objects\app_sec.o: ..\app\src\ota_server.h
|
||||
.\objects\app_sec.o: ..\app\api\app_task.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\ip\ble\api\xc_gatt_server_api.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\ip\ble\hl\src\gatt\gatt_db.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\ip\ble\api\xc_gap_api.h
|
||||
.\objects\app_sec.o: ..\..\..\..\..\component\ble\modules\nvds\api\nvds.h
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,128 @@
|
||||
.\objects\app_task.o: ..\app\src\app_task.c
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\modules\rwip\api\rwip_config.h
|
||||
.\objects\app_task.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\string.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\ip\ble\ll\api\rwble_config.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\modules\rwip\api\rwip_config.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\ip\ble\hl\inc\rwble_hl_config.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\ip\ble\hl\api\rwble_hl_error.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\ip\ble\hl\inc\rwprf_config.h
|
||||
.\objects\app_task.o: ..\app\api\rwapp_config.h
|
||||
.\objects\app_task.o: ..\app\api\app_task.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\modules\common\api\co_bt_defines.h
|
||||
.\objects\app_task.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\stdbool.h
|
||||
.\objects\app_task.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\stdint.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\modules\dbg\api\dbg.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\modules\dbg\api\dbg_swdiag.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\modules\dbg\api\dbg_trc.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\ip\ble\hl\src\gap\gapm\gapm_int.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\ip\ble\hl\api\gapm.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\ip\ble\hl\api\gapm_msg.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\modules\rwip\api\rwip_task.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\ip\ble\hl\api\gap.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc6xxx.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc60xx.h
|
||||
.\objects\app_task.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\stdio.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\core_cm0.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\core_cmInstr.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\core_cmFunc.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_conf.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_cpr.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_offset.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_cprao.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_rf.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_adc.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_aotimer.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc6xxx.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_dma.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_fmc.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_fmc_cache.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_gpio.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_i2c.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_qdec.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_pwm.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_pwm_comn.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_rtc.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\core_cm0.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_spi.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_timer.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_uart.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_wdt.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_pwm_timer.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_calib.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_clock.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_systick.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_pwr.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_gpio.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_aotimer.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_timer.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_rtc.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_uart.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\ringbuffer.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_dma.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_spi.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_spi_dma.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\modules\flash\xc6xxx_fmc_spi.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_fmc_spi_dma.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_uart_dma.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_i2c.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_sw_i2c.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_wdt.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_adc.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_pwm.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\modules\common\api\co_bt.h
|
||||
.\objects\app_task.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\stddef.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\modules\common\api\co_lmp.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\modules\common\api\co_bt.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\modules\common\api\co_hci.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\modules\common\api\co_error.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\modules\common\api\co_list.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\modules\ke\api\ke_task.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\modules\ke\api\ke_msg.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\arch.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\ll\gnuarm\ll.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\arch.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\reg_intc.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_intc.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\plf\refip\src\driver\reg\reg_access.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\modules\common\api\co_utils.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\modules\rwip\api\rwip.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\ip\em\api\em_map.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\modules\common\api\co_math.h
|
||||
.\objects\app_task.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\stdlib.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_em_et.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\ip\ble\ll\api\em_map_ble.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\modules\common\api\co_llcp.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_em_ble_cs.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_em_ble_tx_desc.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_em_ble_rx_desc.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_em_ble_rx_cte_desc.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_em_ble_wpal.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_em_ble_ral.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\ip\ble\hl\src\gatt\gatt_msg_int.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\ip\ble\hl\api\gatt.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\ip\ble\hl\api\gatt_msg.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\ip\ble\hl\api\l2cap.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\ip\ble\hl\api\l2cap_msg.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\modules\common\api\co_buf.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\modules\ke\api\ke_mem.h
|
||||
.\objects\app_task.o: ..\app\src\ota_server.h
|
||||
.\objects\app_task.o: ..\app\api\app_task.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\ip\ble\api\xc_gatt_server_api.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\ip\ble\hl\src\gatt\gatt_db.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\ip\ble\api\xc_gap_api.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\ip\ble\hl\api\gapc_msg.h
|
||||
.\objects\app_task.o: ..\..\..\..\..\component\ble\modules\nvds\api\nvds.h
|
||||
.\objects\app_task.o: ..\app\src\app_sec.h
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,131 @@
|
||||
.\objects\arch_main.o: ..\app\src\arch_main.c
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\modules\rwip\api\rwip_config.h
|
||||
.\objects\arch_main.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\string.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\ip\ble\ll\api\rwble_config.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\modules\rwip\api\rwip_config.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\ip\ble\hl\inc\rwble_hl_config.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\ip\ble\hl\api\rwble_hl_error.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\ip\ble\hl\inc\rwprf_config.h
|
||||
.\objects\arch_main.o: ..\app\api\rwapp_config.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_pwr.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc6xxx.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc60xx.h
|
||||
.\objects\arch_main.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\stdio.h
|
||||
.\objects\arch_main.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\stdint.h
|
||||
.\objects\arch_main.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\stdbool.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\core_cm0.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\core_cmInstr.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\core_cmFunc.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_conf.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_cpr.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_offset.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_cprao.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_rf.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_adc.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_aotimer.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc6xxx.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_dma.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_fmc.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_fmc_cache.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_gpio.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_i2c.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_qdec.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_pwm.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_pwm_comn.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_rtc.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\core_cm0.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_spi.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_timer.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_uart.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_wdt.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_pwm_timer.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_calib.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_clock.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_systick.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_pwr.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_gpio.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_aotimer.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_timer.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_rtc.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_uart.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\ringbuffer.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_dma.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_spi.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_spi_dma.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\modules\flash\xc6xxx_fmc_spi.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_fmc_spi_dma.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_uart_dma.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_i2c.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_sw_i2c.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_wdt.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_adc.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_pwm.h
|
||||
.\objects\arch_main.o: ..\app\api\app_task.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\modules\common\api\co_bt_defines.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\modules\dbg\api\dbg.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\modules\dbg\api\dbg_swdiag.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\modules\dbg\api\dbg_trc.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\ip\ble\hl\src\gap\gapm\gapm_int.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\ip\ble\hl\api\gapm.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\ip\ble\hl\api\gapm_msg.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\modules\rwip\api\rwip_task.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\ip\ble\hl\api\gap.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\modules\common\api\co_bt.h
|
||||
.\objects\arch_main.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\stddef.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\modules\common\api\co_lmp.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\modules\common\api\co_bt.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\modules\common\api\co_hci.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\modules\common\api\co_error.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\modules\common\api\co_list.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\modules\ke\api\ke_task.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\modules\ke\api\ke_msg.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\arch.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\ll\gnuarm\ll.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\arch.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\reg_intc.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_intc.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\plf\refip\src\driver\reg\reg_access.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\modules\common\api\co_utils.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\modules\rwip\api\rwip.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\ip\em\api\em_map.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\modules\common\api\co_math.h
|
||||
.\objects\arch_main.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\stdlib.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_em_et.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\ip\ble\ll\api\em_map_ble.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\modules\common\api\co_llcp.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_em_ble_cs.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_em_ble_tx_desc.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_em_ble_rx_desc.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_em_ble_rx_cte_desc.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_em_ble_wpal.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_em_ble_ral.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\ip\ble\hl\src\gatt\gatt_msg_int.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\ip\ble\hl\api\gatt.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\ip\ble\hl\api\gatt_msg.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\ip\ble\hl\api\l2cap.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\ip\ble\hl\api\l2cap_msg.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\modules\common\api\co_buf.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\modules\ke\api\ke_mem.h
|
||||
.\objects\arch_main.o: ..\app\src\ota_server.h
|
||||
.\objects\arch_main.o: ..\app\api\app_task.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\ip\ble\api\xc_gatt_server_api.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\ip\ble\hl\src\gatt\gatt_db.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\ip\ble\api\xc_gap_api.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\ip\ble\hl\api\gapc_msg.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\modules\nvds\api\nvds.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\ip\ble\ll_rom_port\rom_port.h
|
||||
.\objects\arch_main.o: ..\..\..\..\..\component\ble\modules\rf\api\rf.h
|
||||
.\objects\arch_main.o: ..\app\src\gpio.h
|
||||
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
@@ -0,0 +1,4 @@
|
||||
.\objects\fft.o: ..\app\src\fft.c
|
||||
.\objects\fft.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\math.h
|
||||
.\objects\fft.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\stdio.h
|
||||
.\objects\fft.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\stdint.h
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,68 @@
|
||||
.\objects\gpio.o: ..\app\src\gpio.c
|
||||
.\objects\gpio.o: ..\app\src\gpio.h
|
||||
.\objects\gpio.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\stdio.h
|
||||
.\objects\gpio.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\string.h
|
||||
.\objects\gpio.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\stdint.h
|
||||
.\objects\gpio.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_gpio.h
|
||||
.\objects\gpio.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\stdbool.h
|
||||
.\objects\gpio.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc6xxx.h
|
||||
.\objects\gpio.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc60xx.h
|
||||
.\objects\gpio.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\core_cm0.h
|
||||
.\objects\gpio.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\core_cmInstr.h
|
||||
.\objects\gpio.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\core_cmFunc.h
|
||||
.\objects\gpio.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_conf.h
|
||||
.\objects\gpio.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_cpr.h
|
||||
.\objects\gpio.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_offset.h
|
||||
.\objects\gpio.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_cprao.h
|
||||
.\objects\gpio.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_rf.h
|
||||
.\objects\gpio.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_adc.h
|
||||
.\objects\gpio.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_aotimer.h
|
||||
.\objects\gpio.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc6xxx.h
|
||||
.\objects\gpio.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_dma.h
|
||||
.\objects\gpio.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_fmc.h
|
||||
.\objects\gpio.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_fmc_cache.h
|
||||
.\objects\gpio.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_gpio.h
|
||||
.\objects\gpio.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_i2c.h
|
||||
.\objects\gpio.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_qdec.h
|
||||
.\objects\gpio.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_pwm.h
|
||||
.\objects\gpio.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_pwm_comn.h
|
||||
.\objects\gpio.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_rtc.h
|
||||
.\objects\gpio.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\core_cm0.h
|
||||
.\objects\gpio.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_spi.h
|
||||
.\objects\gpio.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_timer.h
|
||||
.\objects\gpio.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_uart.h
|
||||
.\objects\gpio.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_wdt.h
|
||||
.\objects\gpio.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_pwm_timer.h
|
||||
.\objects\gpio.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_calib.h
|
||||
.\objects\gpio.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_clock.h
|
||||
.\objects\gpio.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_systick.h
|
||||
.\objects\gpio.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_pwr.h
|
||||
.\objects\gpio.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_gpio.h
|
||||
.\objects\gpio.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_aotimer.h
|
||||
.\objects\gpio.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_timer.h
|
||||
.\objects\gpio.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_rtc.h
|
||||
.\objects\gpio.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_uart.h
|
||||
.\objects\gpio.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\ringbuffer.h
|
||||
.\objects\gpio.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_dma.h
|
||||
.\objects\gpio.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_spi.h
|
||||
.\objects\gpio.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_spi_dma.h
|
||||
.\objects\gpio.o: ..\..\..\..\..\component\ble\modules\flash\xc6xxx_fmc_spi.h
|
||||
.\objects\gpio.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_fmc_spi_dma.h
|
||||
.\objects\gpio.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_uart_dma.h
|
||||
.\objects\gpio.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_i2c.h
|
||||
.\objects\gpio.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_sw_i2c.h
|
||||
.\objects\gpio.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_wdt.h
|
||||
.\objects\gpio.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_adc.h
|
||||
.\objects\gpio.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_pwm.h
|
||||
.\objects\gpio.o: ..\app\src\nec_infrared.h
|
||||
.\objects\gpio.o: ..\..\..\..\..\component\ble\modules\dbg\api\dbg.h
|
||||
.\objects\gpio.o: ..\..\..\..\..\component\ble\modules\rwip\api\rwip_config.h
|
||||
.\objects\gpio.o: ..\..\..\..\..\component\ble\ip\ble\ll\api\rwble_config.h
|
||||
.\objects\gpio.o: ..\..\..\..\..\component\ble\modules\rwip\api\rwip_config.h
|
||||
.\objects\gpio.o: ..\..\..\..\..\component\ble\ip\ble\hl\inc\rwble_hl_config.h
|
||||
.\objects\gpio.o: ..\..\..\..\..\component\ble\ip\ble\hl\api\rwble_hl_error.h
|
||||
.\objects\gpio.o: ..\..\..\..\..\component\ble\ip\ble\hl\inc\rwprf_config.h
|
||||
.\objects\gpio.o: ..\app\api\rwapp_config.h
|
||||
.\objects\gpio.o: ..\..\..\..\..\component\ble\modules\dbg\api\dbg_swdiag.h
|
||||
.\objects\gpio.o: ..\..\..\..\..\component\ble\modules\dbg\api\dbg_trc.h
|
||||
.\objects\gpio.o: ..\app\src\key.h
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,57 @@
|
||||
.\objects\key.o: ..\app\src\key.c
|
||||
.\objects\key.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_gpio.h
|
||||
.\objects\key.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\stdbool.h
|
||||
.\objects\key.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\stdio.h
|
||||
.\objects\key.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc6xxx.h
|
||||
.\objects\key.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc60xx.h
|
||||
.\objects\key.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\stdint.h
|
||||
.\objects\key.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\string.h
|
||||
.\objects\key.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\core_cm0.h
|
||||
.\objects\key.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\core_cmInstr.h
|
||||
.\objects\key.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\core_cmFunc.h
|
||||
.\objects\key.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_conf.h
|
||||
.\objects\key.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_cpr.h
|
||||
.\objects\key.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_offset.h
|
||||
.\objects\key.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_cprao.h
|
||||
.\objects\key.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_rf.h
|
||||
.\objects\key.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_adc.h
|
||||
.\objects\key.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_aotimer.h
|
||||
.\objects\key.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc6xxx.h
|
||||
.\objects\key.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_dma.h
|
||||
.\objects\key.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_fmc.h
|
||||
.\objects\key.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_fmc_cache.h
|
||||
.\objects\key.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_gpio.h
|
||||
.\objects\key.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_i2c.h
|
||||
.\objects\key.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_qdec.h
|
||||
.\objects\key.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_pwm.h
|
||||
.\objects\key.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_pwm_comn.h
|
||||
.\objects\key.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_rtc.h
|
||||
.\objects\key.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\core_cm0.h
|
||||
.\objects\key.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_spi.h
|
||||
.\objects\key.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_timer.h
|
||||
.\objects\key.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_uart.h
|
||||
.\objects\key.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_wdt.h
|
||||
.\objects\key.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_pwm_timer.h
|
||||
.\objects\key.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_calib.h
|
||||
.\objects\key.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_clock.h
|
||||
.\objects\key.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_systick.h
|
||||
.\objects\key.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_pwr.h
|
||||
.\objects\key.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_gpio.h
|
||||
.\objects\key.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_aotimer.h
|
||||
.\objects\key.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_timer.h
|
||||
.\objects\key.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_rtc.h
|
||||
.\objects\key.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_uart.h
|
||||
.\objects\key.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\ringbuffer.h
|
||||
.\objects\key.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_dma.h
|
||||
.\objects\key.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_spi.h
|
||||
.\objects\key.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_spi_dma.h
|
||||
.\objects\key.o: ..\..\..\..\..\component\ble\modules\flash\xc6xxx_fmc_spi.h
|
||||
.\objects\key.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_fmc_spi_dma.h
|
||||
.\objects\key.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_uart_dma.h
|
||||
.\objects\key.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_i2c.h
|
||||
.\objects\key.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_sw_i2c.h
|
||||
.\objects\key.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_wdt.h
|
||||
.\objects\key.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_adc.h
|
||||
.\objects\key.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_pwm.h
|
||||
.\objects\key.o: ..\app\src\key.h
|
||||
.\objects\key.o: ..\app\src\message.h
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,55 @@
|
||||
.\objects\message.o: ..\app\src\message.c
|
||||
.\objects\message.o: ..\app\src\message.h
|
||||
.\objects\message.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\stdio.h
|
||||
.\objects\message.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\string.h
|
||||
.\objects\message.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\stdint.h
|
||||
.\objects\message.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc6xxx.h
|
||||
.\objects\message.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc60xx.h
|
||||
.\objects\message.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\stdbool.h
|
||||
.\objects\message.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\core_cm0.h
|
||||
.\objects\message.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\core_cmInstr.h
|
||||
.\objects\message.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\core_cmFunc.h
|
||||
.\objects\message.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_conf.h
|
||||
.\objects\message.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_cpr.h
|
||||
.\objects\message.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_offset.h
|
||||
.\objects\message.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_cprao.h
|
||||
.\objects\message.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_rf.h
|
||||
.\objects\message.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_adc.h
|
||||
.\objects\message.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_aotimer.h
|
||||
.\objects\message.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc6xxx.h
|
||||
.\objects\message.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_dma.h
|
||||
.\objects\message.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_fmc.h
|
||||
.\objects\message.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_fmc_cache.h
|
||||
.\objects\message.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_gpio.h
|
||||
.\objects\message.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_i2c.h
|
||||
.\objects\message.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_qdec.h
|
||||
.\objects\message.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_pwm.h
|
||||
.\objects\message.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_pwm_comn.h
|
||||
.\objects\message.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_rtc.h
|
||||
.\objects\message.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\core_cm0.h
|
||||
.\objects\message.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_spi.h
|
||||
.\objects\message.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_timer.h
|
||||
.\objects\message.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_uart.h
|
||||
.\objects\message.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_wdt.h
|
||||
.\objects\message.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_pwm_timer.h
|
||||
.\objects\message.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_calib.h
|
||||
.\objects\message.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_clock.h
|
||||
.\objects\message.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_systick.h
|
||||
.\objects\message.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_pwr.h
|
||||
.\objects\message.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_gpio.h
|
||||
.\objects\message.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_aotimer.h
|
||||
.\objects\message.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_timer.h
|
||||
.\objects\message.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_rtc.h
|
||||
.\objects\message.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_uart.h
|
||||
.\objects\message.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\ringbuffer.h
|
||||
.\objects\message.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_dma.h
|
||||
.\objects\message.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_spi.h
|
||||
.\objects\message.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_spi_dma.h
|
||||
.\objects\message.o: ..\..\..\..\..\component\ble\modules\flash\xc6xxx_fmc_spi.h
|
||||
.\objects\message.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_fmc_spi_dma.h
|
||||
.\objects\message.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_uart_dma.h
|
||||
.\objects\message.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_i2c.h
|
||||
.\objects\message.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_sw_i2c.h
|
||||
.\objects\message.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_wdt.h
|
||||
.\objects\message.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_adc.h
|
||||
.\objects\message.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_pwm.h
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,56 @@
|
||||
.\objects\nec_infrared.o: ..\app\src\nec_infrared.c
|
||||
.\objects\nec_infrared.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc6xxx.h
|
||||
.\objects\nec_infrared.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc60xx.h
|
||||
.\objects\nec_infrared.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\stdio.h
|
||||
.\objects\nec_infrared.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\stdint.h
|
||||
.\objects\nec_infrared.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\stdbool.h
|
||||
.\objects\nec_infrared.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\string.h
|
||||
.\objects\nec_infrared.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\core_cm0.h
|
||||
.\objects\nec_infrared.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\core_cmInstr.h
|
||||
.\objects\nec_infrared.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\core_cmFunc.h
|
||||
.\objects\nec_infrared.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_conf.h
|
||||
.\objects\nec_infrared.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_cpr.h
|
||||
.\objects\nec_infrared.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_offset.h
|
||||
.\objects\nec_infrared.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_cprao.h
|
||||
.\objects\nec_infrared.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_rf.h
|
||||
.\objects\nec_infrared.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_adc.h
|
||||
.\objects\nec_infrared.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_aotimer.h
|
||||
.\objects\nec_infrared.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc6xxx.h
|
||||
.\objects\nec_infrared.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_dma.h
|
||||
.\objects\nec_infrared.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_fmc.h
|
||||
.\objects\nec_infrared.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_fmc_cache.h
|
||||
.\objects\nec_infrared.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_gpio.h
|
||||
.\objects\nec_infrared.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_i2c.h
|
||||
.\objects\nec_infrared.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_qdec.h
|
||||
.\objects\nec_infrared.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_pwm.h
|
||||
.\objects\nec_infrared.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_pwm_comn.h
|
||||
.\objects\nec_infrared.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_rtc.h
|
||||
.\objects\nec_infrared.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\core_cm0.h
|
||||
.\objects\nec_infrared.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_spi.h
|
||||
.\objects\nec_infrared.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_timer.h
|
||||
.\objects\nec_infrared.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_uart.h
|
||||
.\objects\nec_infrared.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_wdt.h
|
||||
.\objects\nec_infrared.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_pwm_timer.h
|
||||
.\objects\nec_infrared.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_calib.h
|
||||
.\objects\nec_infrared.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_clock.h
|
||||
.\objects\nec_infrared.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_systick.h
|
||||
.\objects\nec_infrared.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_pwr.h
|
||||
.\objects\nec_infrared.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_gpio.h
|
||||
.\objects\nec_infrared.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_aotimer.h
|
||||
.\objects\nec_infrared.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_timer.h
|
||||
.\objects\nec_infrared.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_rtc.h
|
||||
.\objects\nec_infrared.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_uart.h
|
||||
.\objects\nec_infrared.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\ringbuffer.h
|
||||
.\objects\nec_infrared.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_dma.h
|
||||
.\objects\nec_infrared.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_spi.h
|
||||
.\objects\nec_infrared.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_spi_dma.h
|
||||
.\objects\nec_infrared.o: ..\..\..\..\..\component\ble\modules\flash\xc6xxx_fmc_spi.h
|
||||
.\objects\nec_infrared.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_fmc_spi_dma.h
|
||||
.\objects\nec_infrared.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_uart_dma.h
|
||||
.\objects\nec_infrared.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_i2c.h
|
||||
.\objects\nec_infrared.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_sw_i2c.h
|
||||
.\objects\nec_infrared.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_wdt.h
|
||||
.\objects\nec_infrared.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_adc.h
|
||||
.\objects\nec_infrared.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_pwm.h
|
||||
.\objects\nec_infrared.o: ..\app\src\gpio.h
|
||||
.\objects\nec_infrared.o: ..\app\src\nec_infrared.h
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,98 @@
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\ble\modules\nvds\src\nvds.c
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\ble\modules\rwip\api\rwip_config.h
|
||||
.\objects\nvds.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\string.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\ble\ip\ble\ll\api\rwble_config.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\ble\modules\rwip\api\rwip_config.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\ble\ip\ble\hl\inc\rwble_hl_config.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\ble\ip\ble\hl\api\rwble_hl_error.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\ble\ip\ble\hl\inc\rwprf_config.h
|
||||
.\objects\nvds.o: ..\app\api\rwapp_config.h
|
||||
.\objects\nvds.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\stddef.h
|
||||
.\objects\nvds.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\limits.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\ble\modules\nvds\api\nvds.h
|
||||
.\objects\nvds.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\stdbool.h
|
||||
.\objects\nvds.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\stdint.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\arch.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc6xxx.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc60xx.h
|
||||
.\objects\nvds.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\stdio.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\core_cm0.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\core_cmInstr.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\core_cmFunc.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_conf.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_cpr.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_offset.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_cprao.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_rf.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_adc.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_aotimer.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc6xxx.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_dma.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_fmc.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_fmc_cache.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_gpio.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_i2c.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_qdec.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_pwm.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_pwm_comn.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_rtc.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\core_cm0.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_spi.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_timer.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_uart.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_wdt.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_pwm_timer.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_calib.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_clock.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_systick.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_pwr.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_gpio.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_aotimer.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_timer.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_rtc.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_uart.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\ringbuffer.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_dma.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_spi.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_spi_dma.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\ble\modules\flash\xc6xxx_fmc_spi.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_fmc_spi_dma.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_uart_dma.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_i2c.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_sw_i2c.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_wdt.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_adc.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_pwm.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\ll\gnuarm\ll.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\arch.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\reg_intc.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_intc.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\ble\plf\refip\src\driver\reg\reg_access.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\ble\modules\common\api\co_utils.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\ble\modules\common\api\co_bt.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\ble\modules\common\api\co_bt_defines.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\ble\modules\common\api\co_lmp.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\ble\modules\common\api\co_bt.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\ble\modules\common\api\co_hci.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\ble\modules\common\api\co_error.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\ble\modules\rwip\api\rwip.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\ble\ip\em\api\em_map.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\ble\modules\common\api\co_math.h
|
||||
.\objects\nvds.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\stdlib.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_em_et.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\ble\ip\ble\ll\api\em_map_ble.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\ble\modules\common\api\co_llcp.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_em_ble_cs.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_em_ble_tx_desc.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_em_ble_rx_desc.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_em_ble_rx_cte_desc.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_em_ble_wpal.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_em_ble_ral.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\ble\modules\dbg\api\dbg.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\ble\modules\dbg\api\dbg_swdiag.h
|
||||
.\objects\nvds.o: ..\..\..\..\..\component\ble\modules\dbg\api\dbg_trc.h
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,98 @@
|
||||
.\objects\ota_flash_interface.o: ..\app\src\ota_flash_interface.c
|
||||
.\objects\ota_flash_interface.o: ..\app\src\ota_flash_interface.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\ble\modules\flash\xc6xxx_fmc_spi.h
|
||||
.\objects\ota_flash_interface.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\stdio.h
|
||||
.\objects\ota_flash_interface.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\stdint.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\arch.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\ble\modules\rwip\api\rwip_config.h
|
||||
.\objects\ota_flash_interface.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\string.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\ble\ip\ble\ll\api\rwble_config.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\ble\modules\rwip\api\rwip_config.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\ble\ip\ble\hl\inc\rwble_hl_config.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\ble\ip\ble\hl\api\rwble_hl_error.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\ble\ip\ble\hl\inc\rwprf_config.h
|
||||
.\objects\ota_flash_interface.o: ..\app\api\rwapp_config.h
|
||||
.\objects\ota_flash_interface.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\stdbool.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc6xxx.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc60xx.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\core_cm0.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\core_cmInstr.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\core_cmFunc.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_conf.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_cpr.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_offset.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_cprao.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_rf.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_adc.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_aotimer.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc6xxx.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_dma.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_fmc.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_fmc_cache.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_gpio.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_i2c.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_qdec.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_pwm.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_pwm_comn.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_rtc.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\core_cm0.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_spi.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_timer.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_uart.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_wdt.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_pwm_timer.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_calib.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_clock.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_systick.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_pwr.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_gpio.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_aotimer.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_timer.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_rtc.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_uart.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\ringbuffer.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_dma.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_spi.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_spi_dma.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_fmc_spi_dma.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_uart_dma.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_i2c.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_sw_i2c.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_wdt.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_adc.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_pwm.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\ll\gnuarm\ll.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\arch.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\reg_intc.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_intc.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\ble\plf\refip\src\driver\reg\reg_access.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\ble\modules\common\api\co_utils.h
|
||||
.\objects\ota_flash_interface.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\stddef.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\ble\modules\common\api\co_bt.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\ble\modules\common\api\co_bt_defines.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\ble\modules\common\api\co_lmp.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\ble\modules\common\api\co_bt.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\ble\modules\common\api\co_hci.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\ble\modules\common\api\co_error.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\ble\modules\rwip\api\rwip.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\ble\ip\em\api\em_map.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\ble\modules\common\api\co_math.h
|
||||
.\objects\ota_flash_interface.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\stdlib.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_em_et.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\ble\ip\ble\ll\api\em_map_ble.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\ble\modules\common\api\co_llcp.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_em_ble_cs.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_em_ble_tx_desc.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_em_ble_rx_desc.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_em_ble_rx_cte_desc.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_em_ble_wpal.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_em_ble_ral.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\ble\modules\dbg\api\dbg.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\ble\modules\dbg\api\dbg_swdiag.h
|
||||
.\objects\ota_flash_interface.o: ..\..\..\..\..\component\ble\modules\dbg\api\dbg_trc.h
|
||||
.\objects\ota_flash_interface.o: ..\app\src\ota_protocol.h
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,129 @@
|
||||
.\objects\ota_protocol.o: ..\app\src\ota_protocol.c
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\modules\rwip\api\rwip_config.h
|
||||
.\objects\ota_protocol.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\string.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\ip\ble\ll\api\rwble_config.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\modules\rwip\api\rwip_config.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\ip\ble\hl\inc\rwble_hl_config.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\ip\ble\hl\api\rwble_hl_error.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\ip\ble\hl\inc\rwprf_config.h
|
||||
.\objects\ota_protocol.o: ..\app\api\rwapp_config.h
|
||||
.\objects\ota_protocol.o: ..\app\src\ota_protocol.h
|
||||
.\objects\ota_protocol.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\stdio.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\arch.h
|
||||
.\objects\ota_protocol.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\stdint.h
|
||||
.\objects\ota_protocol.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\stdbool.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc6xxx.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc60xx.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\core_cm0.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\core_cmInstr.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\core_cmFunc.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_conf.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_cpr.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_offset.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_cprao.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_rf.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_adc.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_aotimer.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc6xxx.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_dma.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_fmc.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_fmc_cache.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_gpio.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_i2c.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_qdec.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_pwm.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_pwm_comn.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_rtc.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\core_cm0.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_spi.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_timer.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_uart.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_wdt.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_pwm_timer.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_calib.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_clock.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_systick.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_pwr.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_gpio.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_aotimer.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_timer.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_rtc.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_uart.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\ringbuffer.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_dma.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_spi.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_spi_dma.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\modules\flash\xc6xxx_fmc_spi.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_fmc_spi_dma.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_uart_dma.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_i2c.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_sw_i2c.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_wdt.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_adc.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_pwm.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\ll\gnuarm\ll.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\arch.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\reg_intc.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_intc.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\plf\refip\src\driver\reg\reg_access.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\modules\common\api\co_utils.h
|
||||
.\objects\ota_protocol.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\stddef.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\modules\common\api\co_bt.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\modules\common\api\co_bt_defines.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\modules\common\api\co_lmp.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\modules\common\api\co_bt.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\modules\common\api\co_hci.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\modules\common\api\co_error.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\modules\rwip\api\rwip.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\ip\em\api\em_map.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\modules\common\api\co_math.h
|
||||
.\objects\ota_protocol.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\stdlib.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_em_et.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\ip\ble\ll\api\em_map_ble.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\modules\common\api\co_llcp.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_em_ble_cs.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_em_ble_tx_desc.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_em_ble_rx_desc.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_em_ble_rx_cte_desc.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_em_ble_wpal.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_em_ble_ral.h
|
||||
.\objects\ota_protocol.o: ..\app\src\ota_server.h
|
||||
.\objects\ota_protocol.o: ..\app\api\app_task.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\modules\dbg\api\dbg.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\modules\dbg\api\dbg_swdiag.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\modules\dbg\api\dbg_trc.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\ip\ble\hl\src\gap\gapm\gapm_int.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\ip\ble\hl\api\gapm.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\ip\ble\hl\api\gapm_msg.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\modules\rwip\api\rwip_task.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\ip\ble\hl\api\gap.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\modules\common\api\co_list.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\modules\ke\api\ke_task.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\modules\ke\api\ke_msg.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\ip\ble\hl\src\gatt\gatt_msg_int.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\ip\ble\hl\api\gatt.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\ip\ble\hl\api\gatt_msg.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\ip\ble\hl\api\l2cap.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\ip\ble\hl\api\l2cap_msg.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\modules\common\api\co_buf.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\modules\ke\api\ke_mem.h
|
||||
.\objects\ota_protocol.o: ..\app\src\ota_server.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\ip\ble\api\xc_gap_api.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\ip\ble\hl\api\gapc_msg.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\modules\nvds\api\nvds.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\ip\ble\api\xc_gatt_server_api.h
|
||||
.\objects\ota_protocol.o: ..\..\..\..\..\component\ble\ip\ble\hl\src\gatt\gatt_db.h
|
||||
.\objects\ota_protocol.o: ..\app\src\ota_flash_interface.h
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,128 @@
|
||||
.\objects\ota_server.o: ..\app\src\ota_server.c
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\modules\rwip\api\rwip_config.h
|
||||
.\objects\ota_server.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\string.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\ip\ble\ll\api\rwble_config.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\modules\rwip\api\rwip_config.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\ip\ble\hl\inc\rwble_hl_config.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\ip\ble\hl\api\rwble_hl_error.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\ip\ble\hl\inc\rwprf_config.h
|
||||
.\objects\ota_server.o: ..\app\api\rwapp_config.h
|
||||
.\objects\ota_server.o: ..\app\src\ota_server.h
|
||||
.\objects\ota_server.o: ..\app\api\app_task.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\modules\common\api\co_bt_defines.h
|
||||
.\objects\ota_server.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\stdbool.h
|
||||
.\objects\ota_server.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\stdint.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\modules\dbg\api\dbg.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\modules\dbg\api\dbg_swdiag.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\modules\dbg\api\dbg_trc.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\ip\ble\hl\src\gap\gapm\gapm_int.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\ip\ble\hl\api\gapm.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\ip\ble\hl\api\gapm_msg.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\modules\rwip\api\rwip_task.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\ip\ble\hl\api\gap.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc6xxx.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc60xx.h
|
||||
.\objects\ota_server.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\stdio.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\core_cm0.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\core_cmInstr.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\core_cmFunc.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_conf.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_cpr.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_offset.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_cprao.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_rf.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_adc.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_aotimer.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc6xxx.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_dma.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_fmc.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_fmc_cache.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_gpio.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_i2c.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_qdec.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_pwm.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_pwm_comn.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_rtc.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\core_cm0.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_spi.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_timer.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_uart.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_wdt.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_pwm_timer.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_calib.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_clock.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_systick.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_pwr.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_gpio.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_aotimer.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_timer.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_rtc.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_uart.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\ringbuffer.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_dma.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_spi.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_spi_dma.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\modules\flash\xc6xxx_fmc_spi.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_fmc_spi_dma.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_uart_dma.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_i2c.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_sw_i2c.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_wdt.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_adc.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_pwm.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\modules\common\api\co_bt.h
|
||||
.\objects\ota_server.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\stddef.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\modules\common\api\co_lmp.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\modules\common\api\co_bt.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\modules\common\api\co_hci.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\modules\common\api\co_error.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\modules\common\api\co_list.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\modules\ke\api\ke_task.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\modules\ke\api\ke_msg.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\arch.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\ll\gnuarm\ll.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\arch.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\reg_intc.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_intc.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\plf\refip\src\driver\reg\reg_access.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\modules\common\api\co_utils.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\modules\rwip\api\rwip.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\ip\em\api\em_map.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\modules\common\api\co_math.h
|
||||
.\objects\ota_server.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\stdlib.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_em_et.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\ip\ble\ll\api\em_map_ble.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\modules\common\api\co_llcp.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_em_ble_cs.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_em_ble_tx_desc.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_em_ble_rx_desc.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_em_ble_rx_cte_desc.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_em_ble_wpal.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\plf\refip\src\build\ble-full\reg\fw\_reg_em_ble_ral.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\ip\ble\hl\src\gatt\gatt_msg_int.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\ip\ble\hl\api\gatt.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\ip\ble\hl\api\gatt_msg.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\ip\ble\hl\api\l2cap.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\ip\ble\hl\api\l2cap_msg.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\plf\refip\src\arch\compiler\gnuarm\compiler.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\modules\common\api\co_buf.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\modules\ke\api\ke_mem.h
|
||||
.\objects\ota_server.o: ..\app\src\ota_server.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\ip\ble\api\xc_gap_api.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\ip\ble\hl\api\gapc_msg.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\modules\nvds\api\nvds.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\ip\ble\api\xc_gatt_server_api.h
|
||||
.\objects\ota_server.o: ..\..\..\..\..\component\ble\ip\ble\hl\src\gatt\gatt_db.h
|
||||
.\objects\ota_server.o: ..\app\src\ota_protocol.h
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,59 @@
|
||||
.\objects\pga_adc.o: ..\app\src\pga_adc.c
|
||||
.\objects\pga_adc.o: ..\app\src\pga_adc.h
|
||||
.\objects\pga_adc.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\stdint.h
|
||||
.\objects\pga_adc.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc60xx.h
|
||||
.\objects\pga_adc.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\stdio.h
|
||||
.\objects\pga_adc.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\stdbool.h
|
||||
.\objects\pga_adc.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\string.h
|
||||
.\objects\pga_adc.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\core_cm0.h
|
||||
.\objects\pga_adc.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\core_cmInstr.h
|
||||
.\objects\pga_adc.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\core_cmFunc.h
|
||||
.\objects\pga_adc.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_adc.h
|
||||
.\objects\pga_adc.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc6xxx.h
|
||||
.\objects\pga_adc.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_conf.h
|
||||
.\objects\pga_adc.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_cpr.h
|
||||
.\objects\pga_adc.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_offset.h
|
||||
.\objects\pga_adc.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_cprao.h
|
||||
.\objects\pga_adc.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_rf.h
|
||||
.\objects\pga_adc.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_adc.h
|
||||
.\objects\pga_adc.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_aotimer.h
|
||||
.\objects\pga_adc.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc6xxx.h
|
||||
.\objects\pga_adc.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_dma.h
|
||||
.\objects\pga_adc.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_fmc.h
|
||||
.\objects\pga_adc.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_fmc_cache.h
|
||||
.\objects\pga_adc.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_gpio.h
|
||||
.\objects\pga_adc.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_i2c.h
|
||||
.\objects\pga_adc.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_qdec.h
|
||||
.\objects\pga_adc.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_pwm.h
|
||||
.\objects\pga_adc.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_pwm_comn.h
|
||||
.\objects\pga_adc.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_rtc.h
|
||||
.\objects\pga_adc.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\core_cm0.h
|
||||
.\objects\pga_adc.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_spi.h
|
||||
.\objects\pga_adc.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_timer.h
|
||||
.\objects\pga_adc.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_uart.h
|
||||
.\objects\pga_adc.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_wdt.h
|
||||
.\objects\pga_adc.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_pwm_timer.h
|
||||
.\objects\pga_adc.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_calib.h
|
||||
.\objects\pga_adc.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_clock.h
|
||||
.\objects\pga_adc.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_systick.h
|
||||
.\objects\pga_adc.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_pwr.h
|
||||
.\objects\pga_adc.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_gpio.h
|
||||
.\objects\pga_adc.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_aotimer.h
|
||||
.\objects\pga_adc.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_timer.h
|
||||
.\objects\pga_adc.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_rtc.h
|
||||
.\objects\pga_adc.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_uart.h
|
||||
.\objects\pga_adc.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\ringbuffer.h
|
||||
.\objects\pga_adc.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_dma.h
|
||||
.\objects\pga_adc.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_spi.h
|
||||
.\objects\pga_adc.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_spi_dma.h
|
||||
.\objects\pga_adc.o: ..\..\..\..\..\component\ble\modules\flash\xc6xxx_fmc_spi.h
|
||||
.\objects\pga_adc.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_fmc_spi_dma.h
|
||||
.\objects\pga_adc.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_uart_dma.h
|
||||
.\objects\pga_adc.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_i2c.h
|
||||
.\objects\pga_adc.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_sw_i2c.h
|
||||
.\objects\pga_adc.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_wdt.h
|
||||
.\objects\pga_adc.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_adc.h
|
||||
.\objects\pga_adc.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_pwm.h
|
||||
.\objects\pga_adc.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_pga.h
|
||||
.\objects\pga_adc.o: ..\app\src\key.h
|
||||
.\objects\pga_adc.o: ..\app\src\message.h
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,57 @@
|
||||
.\objects\pwm.o: ..\app\src\pwm.c
|
||||
.\objects\pwm.o: ..\app\src\pwm.h
|
||||
.\objects\pwm.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\stdio.h
|
||||
.\objects\pwm.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\string.h
|
||||
.\objects\pwm.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\stdint.h
|
||||
.\objects\pwm.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_pwm.h
|
||||
.\objects\pwm.o: D:\Program Files\Keil_v5\ARM\ARMCC\Bin\..\include\stdbool.h
|
||||
.\objects\pwm.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc6xxx.h
|
||||
.\objects\pwm.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc60xx.h
|
||||
.\objects\pwm.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\core_cm0.h
|
||||
.\objects\pwm.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\core_cmInstr.h
|
||||
.\objects\pwm.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\core_cmFunc.h
|
||||
.\objects\pwm.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_conf.h
|
||||
.\objects\pwm.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_cpr.h
|
||||
.\objects\pwm.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_offset.h
|
||||
.\objects\pwm.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_cprao.h
|
||||
.\objects\pwm.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_rf.h
|
||||
.\objects\pwm.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_adc.h
|
||||
.\objects\pwm.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_aotimer.h
|
||||
.\objects\pwm.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc6xxx.h
|
||||
.\objects\pwm.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_dma.h
|
||||
.\objects\pwm.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_fmc.h
|
||||
.\objects\pwm.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_fmc_cache.h
|
||||
.\objects\pwm.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_gpio.h
|
||||
.\objects\pwm.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_i2c.h
|
||||
.\objects\pwm.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_qdec.h
|
||||
.\objects\pwm.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_pwm.h
|
||||
.\objects\pwm.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_pwm_comn.h
|
||||
.\objects\pwm.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_rtc.h
|
||||
.\objects\pwm.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\core_cm0.h
|
||||
.\objects\pwm.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_spi.h
|
||||
.\objects\pwm.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_timer.h
|
||||
.\objects\pwm.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_uart.h
|
||||
.\objects\pwm.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_wdt.h
|
||||
.\objects\pwm.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\Device\xc_m0_register\xc_reg_pwm_timer.h
|
||||
.\objects\pwm.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_calib.h
|
||||
.\objects\pwm.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_clock.h
|
||||
.\objects\pwm.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_systick.h
|
||||
.\objects\pwm.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_pwr.h
|
||||
.\objects\pwm.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_gpio.h
|
||||
.\objects\pwm.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_aotimer.h
|
||||
.\objects\pwm.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_timer.h
|
||||
.\objects\pwm.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_rtc.h
|
||||
.\objects\pwm.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_uart.h
|
||||
.\objects\pwm.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\ringbuffer.h
|
||||
.\objects\pwm.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_dma.h
|
||||
.\objects\pwm.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_spi.h
|
||||
.\objects\pwm.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_spi_dma.h
|
||||
.\objects\pwm.o: ..\..\..\..\..\component\ble\modules\flash\xc6xxx_fmc_spi.h
|
||||
.\objects\pwm.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_fmc_spi_dma.h
|
||||
.\objects\pwm.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_uart_dma.h
|
||||
.\objects\pwm.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_i2c.h
|
||||
.\objects\pwm.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_sw_i2c.h
|
||||
.\objects\pwm.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_wdt.h
|
||||
.\objects\pwm.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_adc.h
|
||||
.\objects\pwm.o: ..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_pwm.h
|
||||
.\objects\pwm.o: ..\app\src\rgblight.h
|
||||
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user