修复mico-sdk错误

This commit is contained in:
nhkefus
2025-03-11 15:54:45 +08:00
parent 3422912129
commit 2ccb892a1c
2152 changed files with 664341 additions and 702636 deletions

View File

@@ -1,175 +1,175 @@
/**
******************************************************************************
* @file system_easylink.c
* @author William Xu
* @version V1.0.0
* @date 20-July-2015
* @brief This file provide the easylink function for quick provisioning and
* first time configuration.
******************************************************************************
*
* UNPUBLISHED PROPRIETARY SOURCE CODE
* Copyright (c) 2016 MXCHIP Inc.
*
* The contents of this file may not be disclosed to third parties, copied or
* duplicated in any form, in whole or in part, without the prior written
* permission of MXCHIP Corporation.
******************************************************************************
*/
#include "mico.h"
#include "StringUtils.h"
#include "system_internal.h"
static void _bonjour_generate_txt_record( char *txt_record, uint32_t easyLink_id, WiFi_Interface interface,
system_context_t * const inContext )
{
char *temp_txt2 = NULL;
temp_txt2 = __strdup_trans_dot( FIRMWARE_REVISION );
sprintf( txt_record, "FW=%s.", temp_txt2 );
free( temp_txt2 );
temp_txt2 = __strdup_trans_dot( HARDWARE_REVISION );
sprintf( txt_record, "%sHD=%s.", txt_record, temp_txt2 );
free( temp_txt2 );
temp_txt2 = __strdup_trans_dot( PROTOCOL );
sprintf( txt_record, "%sPO=%s.", txt_record, temp_txt2 );
free( temp_txt2 );
temp_txt2 = __strdup_trans_dot( inContext->micoStatus.rf_version );
sprintf( txt_record, "%sRF=%s.", txt_record, temp_txt2 );
free( temp_txt2 );
temp_txt2 = __strdup_trans_dot( inContext->micoStatus.mac );
sprintf( txt_record, "%sMAC=%s.", txt_record, temp_txt2 );
free( temp_txt2 );
temp_txt2 = __strdup_trans_dot( MicoGetVer( ) );
sprintf( txt_record, "%sOS=%s.", txt_record, temp_txt2 );
free( temp_txt2 );
temp_txt2 = __strdup_trans_dot( MODEL );
sprintf( txt_record, "%sMD=%s.", txt_record, temp_txt2 );
free( temp_txt2 );
temp_txt2 = __strdup_trans_dot( MANUFACTURER );
sprintf( txt_record, "%sMF=%s.", txt_record, temp_txt2 );
free( temp_txt2 );
if ( interface == Soft_AP )
{
sprintf( txt_record, "%swlan unconfigured=T.", txt_record );
sprintf( txt_record, "%sFTC=T.", txt_record );
}
else
{
sprintf( txt_record, "%swlan unconfigured=F.", txt_record );
#ifdef MICO_CONFIG_SERVER_ENABLE
sprintf(txt_record, "%sFTC=T.", txt_record);
#else
sprintf( txt_record, "%sFTC=F.", txt_record );
#endif
}
sprintf( txt_record, "%sID=%lx.", txt_record, easyLink_id );
}
OSStatus easylink_bonjour_start( WiFi_Interface interface, uint32_t easyLink_id, system_context_t * const inContext )
{
char *temp_txt = NULL;
OSStatus err = kNoErr;
net_para_st para;
mdns_init_t init;
temp_txt = malloc( 500 );
require_action( temp_txt, exit, err = kNoMemoryErr );
memset( &init, 0x0, sizeof(mdns_init_t) );
micoWlanGetIPStatus( &para, interface );
init.service_name = "_easylink_config._tcp.local.";
/* name(xxxxxx).local. */
snprintf( temp_txt, 100, "%s(%c%c%c%c%c%c).local.", MODEL,
inContext->micoStatus.mac[9],
inContext->micoStatus.mac[10],
inContext->micoStatus.mac[12],
inContext->micoStatus.mac[13],
inContext->micoStatus.mac[15],
inContext->micoStatus.mac[16] );
init.host_name = (char*) __strdup( temp_txt );
/* name(xxxxxx). */
snprintf( temp_txt, 100, "%s(%c%c%c%c%c%c)", MODEL,
inContext->micoStatus.mac[9],
inContext->micoStatus.mac[10],
inContext->micoStatus.mac[12],
inContext->micoStatus.mac[13],
inContext->micoStatus.mac[15],
inContext->micoStatus.mac[16] );
init.instance_name = (char*) __strdup( temp_txt );
init.service_port = MICO_CONFIG_SERVER_PORT;
_bonjour_generate_txt_record( temp_txt, easyLink_id, interface, inContext );
init.txt_record = (char*) __strdup( temp_txt );
if ( interface == Soft_AP )
mdns_add_record( init, interface, 1500 );
else
mdns_add_record( init, interface, 10 );
free( init.host_name );
free( init.instance_name );
free( init.txt_record );
exit:
if ( temp_txt ) free( temp_txt );
return err;
}
OSStatus easylink_bonjour_update( WiFi_Interface interface, uint32_t easyLink_id, system_context_t * const inContext )
{
char *temp_txt = NULL;
OSStatus err = kNoErr;
temp_txt = malloc( 500 );
require_action( temp_txt, exit, err = kNoMemoryErr );
_bonjour_generate_txt_record( temp_txt, easyLink_id, interface, inContext );
mdns_update_txt_record( "_easylink_config._tcp.local.", interface, temp_txt );
exit:
if ( temp_txt ) free( temp_txt );
return err;
}
void easylink_remove_bonjour( void )
{
mdns_record_state_t easylink_service_state = RECORD_REMOVED;
/* Remove previous _easylink_config service if existed */
easylink_service_state = mdns_get_record_status( "_easylink_config._tcp.local.", Station);
if ( easylink_service_state != RECORD_REMOVED )
{
UnSetTimer( easylink_remove_bonjour );
mdns_suspend_record( "_easylink_config._tcp.local.", Station, true );
mico_rtos_delay_milliseconds( 1500 );
}
/* Remove previous _easylink_config service if existed */
easylink_service_state = mdns_get_record_status( "_easylink_config._tcp.local.", Soft_AP);
if ( easylink_service_state != RECORD_REMOVED )
{
mdns_suspend_record( "_easylink_config._tcp.local.", Soft_AP, true );
mico_rtos_delay_milliseconds( 1500 );
}
}
/**
******************************************************************************
* @file system_easylink.c
* @author William Xu
* @version V1.0.0
* @date 20-July-2015
* @brief This file provide the easylink function for quick provisioning and
* first time configuration.
******************************************************************************
*
* UNPUBLISHED PROPRIETARY SOURCE CODE
* Copyright (c) 2016 MXCHIP Inc.
*
* The contents of this file may not be disclosed to third parties, copied or
* duplicated in any form, in whole or in part, without the prior written
* permission of MXCHIP Corporation.
******************************************************************************
*/
#include "mico.h"
#include "StringUtils.h"
#include "system_internal.h"
static void _bonjour_generate_txt_record( char *txt_record, uint32_t easyLink_id, WiFi_Interface interface,
system_context_t * const inContext )
{
char *temp_txt2 = NULL;
temp_txt2 = __strdup_trans_dot( FIRMWARE_REVISION );
sprintf( txt_record, "FW=%s.", temp_txt2 );
free( temp_txt2 );
temp_txt2 = __strdup_trans_dot( HARDWARE_REVISION );
sprintf( txt_record, "%sHD=%s.", txt_record, temp_txt2 );
free( temp_txt2 );
temp_txt2 = __strdup_trans_dot( PROTOCOL );
sprintf( txt_record, "%sPO=%s.", txt_record, temp_txt2 );
free( temp_txt2 );
temp_txt2 = __strdup_trans_dot( inContext->micoStatus.rf_version );
sprintf( txt_record, "%sRF=%s.", txt_record, temp_txt2 );
free( temp_txt2 );
temp_txt2 = __strdup_trans_dot( inContext->micoStatus.mac );
sprintf( txt_record, "%sMAC=%s.", txt_record, temp_txt2 );
free( temp_txt2 );
temp_txt2 = __strdup_trans_dot( MicoGetVer( ) );
sprintf( txt_record, "%sOS=%s.", txt_record, temp_txt2 );
free( temp_txt2 );
temp_txt2 = __strdup_trans_dot( MODEL );
sprintf( txt_record, "%sMD=%s.", txt_record, temp_txt2 );
free( temp_txt2 );
temp_txt2 = __strdup_trans_dot( MANUFACTURER );
sprintf( txt_record, "%sMF=%s.", txt_record, temp_txt2 );
free( temp_txt2 );
if ( interface == Soft_AP )
{
sprintf( txt_record, "%swlan unconfigured=T.", txt_record );
sprintf( txt_record, "%sFTC=T.", txt_record );
}
else
{
sprintf( txt_record, "%swlan unconfigured=F.", txt_record );
#ifdef MICO_CONFIG_SERVER_ENABLE
sprintf(txt_record, "%sFTC=T.", txt_record);
#else
sprintf( txt_record, "%sFTC=F.", txt_record );
#endif
}
sprintf( txt_record, "%sID=%lx.", txt_record, easyLink_id );
}
OSStatus easylink_bonjour_start( WiFi_Interface interface, uint32_t easyLink_id, system_context_t * const inContext )
{
char *temp_txt = NULL;
OSStatus err = kNoErr;
net_para_st para;
mdns_init_t init;
temp_txt = malloc( 500 );
require_action( temp_txt, exit, err = kNoMemoryErr );
memset( &init, 0x0, sizeof(mdns_init_t) );
micoWlanGetIPStatus( &para, interface );
init.service_name = "_easylink_config._tcp.local.";
/* name(xxxxxx).local. */
snprintf( temp_txt, 100, "%s(%c%c%c%c%c%c).local.", MODEL,
inContext->micoStatus.mac[9],
inContext->micoStatus.mac[10],
inContext->micoStatus.mac[12],
inContext->micoStatus.mac[13],
inContext->micoStatus.mac[15],
inContext->micoStatus.mac[16] );
init.host_name = (char*) __strdup( temp_txt );
/* name(xxxxxx). */
snprintf( temp_txt, 100, "%s(%c%c%c%c%c%c)", MODEL,
inContext->micoStatus.mac[9],
inContext->micoStatus.mac[10],
inContext->micoStatus.mac[12],
inContext->micoStatus.mac[13],
inContext->micoStatus.mac[15],
inContext->micoStatus.mac[16] );
init.instance_name = (char*) __strdup( temp_txt );
init.service_port = MICO_CONFIG_SERVER_PORT;
_bonjour_generate_txt_record( temp_txt, easyLink_id, interface, inContext );
init.txt_record = (char*) __strdup( temp_txt );
if ( interface == Soft_AP )
mdns_add_record( init, interface, 1500 );
else
mdns_add_record( init, interface, 10 );
free( init.host_name );
free( init.instance_name );
free( init.txt_record );
exit:
if ( temp_txt ) free( temp_txt );
return err;
}
OSStatus easylink_bonjour_update( WiFi_Interface interface, uint32_t easyLink_id, system_context_t * const inContext )
{
char *temp_txt = NULL;
OSStatus err = kNoErr;
temp_txt = malloc( 500 );
require_action( temp_txt, exit, err = kNoMemoryErr );
_bonjour_generate_txt_record( temp_txt, easyLink_id, interface, inContext );
mdns_update_txt_record( "_easylink_config._tcp.local.", interface, temp_txt );
exit:
if ( temp_txt ) free( temp_txt );
return err;
}
void easylink_remove_bonjour( void )
{
mdns_record_state_t easylink_service_state = RECORD_REMOVED;
/* Remove previous _easylink_config service if existed */
easylink_service_state = mdns_get_record_status( "_easylink_config._tcp.local.", Station);
if ( easylink_service_state != RECORD_REMOVED )
{
UnSetTimer( easylink_remove_bonjour );
mdns_suspend_record( "_easylink_config._tcp.local.", Station, true );
mico_rtos_delay_milliseconds( 1500 );
}
/* Remove previous _easylink_config service if existed */
easylink_service_state = mdns_get_record_status( "_easylink_config._tcp.local.", Soft_AP);
if ( easylink_service_state != RECORD_REMOVED )
{
mdns_suspend_record( "_easylink_config._tcp.local.", Soft_AP, true );
mico_rtos_delay_milliseconds( 1500 );
}
}

View File

@@ -1,44 +1,44 @@
/**
******************************************************************************
* @file airkiss_discovery.h
* @author William Xu
* @version V1.0.0
* @date 28-10-2015
* @brief Head file for WECHAT device discovery protocol
******************************************************************************
*
* UNPUBLISHED PROPRIETARY SOURCE CODE
* Copyright (c) 2016 MXCHIP Inc.
*
* The contents of this file may not be disclosed to third parties, copied or
* duplicated in any form, in whole or in part, without the prior written
* permission of MXCHIP Corporation.
******************************************************************************
*/
#ifndef __EASYLINK_INTERNAL_H
#define __EASYLINK_INTERNAL_H
#include "mico.h"
#include "system_internal.h"
#ifdef __cplusplus
extern "C" {
#endif
OSStatus easylink_bonjour_start( WiFi_Interface interface, uint32_t easyLink_id, system_context_t * const inContext );
OSStatus easylink_bonjour_update( WiFi_Interface interface, uint32_t easyLink_id, system_context_t * const inContext );
void easylink_remove_bonjour( void );
OSStatus easylink_softap_start( system_context_t * const inContext );
uint32_t easylink_softap_get_identifier( void );
#ifdef __cplusplus
} /*extern "C" */
#endif
#endif //__EASYLINK_INTERNAL_H
/**
******************************************************************************
* @file airkiss_discovery.h
* @author William Xu
* @version V1.0.0
* @date 28-10-2015
* @brief Head file for WECHAT device discovery protocol
******************************************************************************
*
* UNPUBLISHED PROPRIETARY SOURCE CODE
* Copyright (c) 2016 MXCHIP Inc.
*
* The contents of this file may not be disclosed to third parties, copied or
* duplicated in any form, in whole or in part, without the prior written
* permission of MXCHIP Corporation.
******************************************************************************
*/
#ifndef __EASYLINK_INTERNAL_H
#define __EASYLINK_INTERNAL_H
#include "mico.h"
#include "system_internal.h"
#ifdef __cplusplus
extern "C" {
#endif
OSStatus easylink_bonjour_start( WiFi_Interface interface, uint32_t easyLink_id, system_context_t * const inContext );
OSStatus easylink_bonjour_update( WiFi_Interface interface, uint32_t easyLink_id, system_context_t * const inContext );
void easylink_remove_bonjour( void );
OSStatus easylink_softap_start( system_context_t * const inContext );
uint32_t easylink_softap_get_identifier( void );
#ifdef __cplusplus
} /*extern "C" */
#endif
#endif //__EASYLINK_INTERNAL_H