3.4.10. APP - Apple fmy & Google fhn

3.4.10.1. 概述

Note

同时支持Apple fmy和Google fhn功能。

3.4.10.2. 工程配置

配置app选择:apps/demo/transfer/include/app_config.h

//apps example 选择,只能选1个,要配置对应的board_config.h,配置应用切换时对应选择的应用都要置1
#define CONFIG_APP_FMY_FHN_DUAL           1 //Apple fmy和Google fhn双系统应用, 使用需要配置板级CONFIG_BOARD_AW33N_FMY_FHN

板级选择,接着在文件(apps/demo/transfer/board/bd57/board_config.h)下进行对应的板级选择如下:

#define CONFIG_BOARD_AW33N_FMY_FHN
#include "board_aw33n_fmy_fhn_cfg.h"

3.4.10.3. 主要功能说明

  1. 本demo同时支持Apple fmy和Google fhn功能,整合了两者的功能逻辑。

  2. 烧录完上电后,demo会进入软关机状态,用户需要长按ADkey K1开机,开机后默认打开广播(同时发出双路广播),

  3. 用户可打开谷歌手机或者苹果手机,用户只能选择一种配网模式,不能同时进行。

  4. 具体配网逻辑和功能使用,可分别查看 Google Fhn 或者 Findmy 章节

3.4.10.4. 主要代码讲解

apps\demo\transfer\examples\fmy_fhn_dual\ble_fmy_fhn_dual.c

/*************************************************************************************************/
/*!
 *  \brief      模块初始化
 *
 *  \param      [in]
 *
 *  \return
 *
 *  \note
 */
/*************************************************************************************************/
void fmy_fhn_dual_bt_ble_init(void)
{
    log_info("%s", __FUNCTION__);
    log_info("ble_file: %s", __FILE__);

    u8 protocol_init_state = APP_NO_PAIRED_STATE;
    syscfg_read(CFG_LAST_SW_APP_ID, (uint8_t *)&protocol_init_state, sizeof(protocol_init_state));

    apple_fmy_common_init();

    if ((protocol_init_state == APPLE_FMY_PAIRED_DONE) || (protocol_init_state == APP_NO_PAIRED_STATE)) {
        apple_fmy_protocol_init();
    }

    if ((protocol_init_state == GOOGLE_FHN_PAIRED_DONE) || (protocol_init_state == APP_NO_PAIRED_STATE)) {
        google_fhn_protocol_init();
    }
}

/*************************************************************************************************/
/*!
 *  \brief      按键处理模块
 *
 *  \param      [in]
 *
 *  \return
 *
 *  \note
 */
/*************************************************************************************************/
void fmy_fhn_dual_key_deal_test(uint8_t key_type, uint8_t key_value)
{
    log_info(">>>>>>>>>> google_fhn key test %d %d", key_type, key_value);
    if (key_value ==  TCFG_ADKEY_VALUE0) {
        switch (key_type) {
        case KEY_EVENT_CLICK:
            break;
        case KEY_EVENT_DOUBLE_CLICK:
            break;
        case KEY_EVENT_TRIPLE_CLICK:
            break;
        case KEY_EVENT_FOURTH_CLICK:
            //双findmy系统记录配网状态
            u8 protocol_init_state = APP_NO_PAIRED_STATE;
            syscfg_write(CFG_LAST_SW_APP_ID, (uint8_t *)&protocol_init_state, sizeof(protocol_init_state));
            log_info(">>>test to reset accessory");
            //恢复苹果fmy出厂设置
            fmy_info_save_before_factory_reset();
            fmna_plaform_reset_config();
            //恢复谷歌fhn出厂设置
            fhn_sound_set_effect(1, 100);
            sys_timeout_add(NULL, fhn_factory_reset_test, 100);
            break;
        case KEY_EVENT_LONG:
            printf("####################### gfps power off");
            app_power_event_to_user(POWER_EVENT_POWER_SOFTOFF);
            break;
        }
    }
}

3.4.10.5. case默认应用资源(默认使用AW33N Findmy DEMO开发板)

Note

demo默认占用外设资源如下,具体可以查看board_aw33n_fmy_fhn_cfg.h

I/O口占用情况

PA口 I/O

默认占用情况

PA3

默认打印UART0引脚

PA1

iokey检测引脚

硬件定时器占用情况

定时器

默认占用情况

TIMER0

暂无使用

TIMER1

暂无使用

TIMER2

暂无使用

TIMER3

暂无使用

串口占用情况

串口

默认占用情况

UART0

SDK打印

UART1

暂无使用

UART2

暂无使用