Files
kunlun/app/iot_dlt645_app/common/app_common.h

228 lines
5.8 KiB
C
Raw Normal View History

2024-09-28 14:24:04 +08:00
/****************************************************************************
Copyright(c) 2019 by Aerospace C.Power (Chongqing) Microelectronics. ALL RIGHTS RESERVED.
This Information is proprietary to Aerospace C.Power (Chongqing) Microelectronics and MAY NOT
be copied by any method or incorporated into another program without
the express written consent of Aerospace C.Power. This Information or any portion
thereof remains the property of Aerospace C.Power. The Information contained herein
is believed to be accurate and Aerospace C.Power assumes no responsibility or
liability for its use in any way and conveys no license or title under
any patent or copyright and makes no representation or warranty that this
Information is free from patent or copyright infringement.
****************************************************************************/
#ifndef _APP_COMMON_H_
#define _APP_COMMON_H_
#include "app_types.h"
#ifdef __cplusplus
extern "C" {
#endif
#define APP_ARRAY_COUNT(x) (sizeof(x) / sizeof((x)[0]))
#define APP_SWAP16(x) ((((x)&0xff00) >> 8) | (((x)&0x00ff) << 8))
#define APP_MAKE_U16(a, b) \
((uint16_t)(((uint8_t)(a)) | ((uint16_t)((uint8_t)(b))) << 8))
#define APP_MAKE_U32(a, b) \
((uint32_t)(((uint16_t)(a)) | ((uint32_t)((uint16_t)(b))) << 16))
#define APP_MAKE_IDENTIFIER(a, b, c, d) \
APP_MAKE_U32(APP_MAKE_U16(a, b), APP_MAKE_U16(c, d))
#define APP_VER2BCD(v, r, spc) \
((((v)&0xF) << 12) | (((r)&0xF) << 8) | ((spc)&0xFF))
#define APP_PRINTF(fmt, ...) \
do { \
if (app_get_log_enable()) { \
iot_cus_printf(fmt, ##__VA_ARGS__); \
iot_cus_printf("\n"); \
} \
} while(0)
#define APP_PRINT_BUF(sz, buf, len) \
do { \
if (app_get_log_enable()) { \
int32_t tmp_length = (len); \
int32_t tmp_i = 0; \
iot_cus_printf((sz)); \
iot_cus_printf("[len=%d]", len); \
for (tmp_i = 0; tmp_i < tmp_length; tmp_i++) { \
iot_cus_printf(" %02X", (uint8_t)(buf)[tmp_i]); \
} \
iot_cus_printf("\n"); \
} \
} while (0)
#ifndef MAC_FMT
#define MAC_FMT "%02X%02X%02X%02X%02X%02X"
#endif
#ifndef MAC_ARG
#define MAC_ARG(x) ((uint8_t*)(x))[0],((uint8_t*)(x))[1],((uint8_t*)(x))[2], \
((uint8_t*)(x))[3],((uint8_t*)(x))[4],((uint8_t*)(x))[5]
#endif
#define IOT_APP_DL645_MID IOT_APP_DEMO_MID
/* DLT645 data */
#define ID_PLC_DLT645_DATA (0x60)
#define TIMER_TYPE_ONCE false /* Single-period timer */
#define TIMER_TYPE_PERIOD true /* Periodic timer */
#define STA_OFFLINE_EVENT (0)
#define STA_ONLINE_EVENT (1)
#define MAX_RSP_DATA_LEN (512)
typedef enum {
/* app timer for reboot local device. */
APP_TIMER_ID_REBOOT = 0,
/* app timer for set mac address. */
APP_TIMER_ID_SET_MAC,
/* app timer for signal led show. */
APP_TIMER_ID_SIGNAL_LED,
/* app timer for check if network done. */
APP_TIMER_ID_NET_DONE_CHECK,
APP_TIMER_ID_MAX
} app_timer_id_e;
typedef enum {
APP_TASK_MAIN,
APP_TASK_CUS,
APP_TASK_MAX
} app_task_e;
/* save the pack status */
#pragma pack(push)
/* 1 byte align */
#pragma pack(1)
typedef struct {
/* PLC packet ID */
uint16_t id;
/* destination address */
uint8_t mac[IOT_MAC_ADDR_LEN];
} app_custom_data;
/* append data before send plc data */
typedef struct append_tx_info {
/* send plc no connectness */
uint16_t force_connless : 1,
/* reserve */
resv : 15;
} append_tx_info_t;
/* restore the pack status */
#pragma pack(pop)
/**
* @brief app_set_freq_band() - set carrier communication frequency band.
*
* @param [in] band_id: band id.
*
* @return None.
*/
void app_set_freq_band(uint8_t band_id);
/**
* @brief app_set_scan_band_bitmap() - set scan band bitmap.
*
* @param [in] band_bitmap: band bitmap.
*
* @return None.
*/
void app_set_scan_band_bitmap(uint8_t *band_bitmap);
/**
* @brief app_get_cco_mac_addr() - get the MAC of CCO in this topo.
*
* @param None.
*
* @return mac address.
*/
uint8_t *app_get_cco_mac_addr(void);
/**
* @brief app_get_cco_mac_addr() - get the MAC of local device.
*
* @param None.
*
* @return mac address.
*/
uint8_t *app_get_mac_addr(void);
/**
* @brief app_set_mac_addr() - set the MAC of local device.
*
* @param [in] mac: mac address.
*
* @return None.
*/
void app_set_mac_addr(uint8_t *mac);
/**
* @brief app_get_log_enable() - get log print enable or disable.
*
* @param None.
*
* @return true: enable;
* @return false: disable;
*/
uint8_t app_get_log_enable(void);
/**
* @brief app_set_log_enable() - set log print enable or disable.
*
* @param [in] flag: true, eanble; false, disable;
*
* @return None.
*/
void app_set_log_enable(uint8_t flag);
/**
* @brief app_timer_start() - start app timer.
*
* @param [in] id: app timer id, see app_timer_id_e.
* @param [in] period: timer period in milliseconds.
* @param [in] type: timer type, TIMER_TYPE_ONCE or TIMER_TYPE_PERIOD.
*
* @return 0: failed;
* @return others: timer id;
*/
timer_id_t app_timer_start(app_timer_id_e id, uint32_t period, uint8_t type);
/**
* @brief app_get_random_num32() - get a random number in range.
*
* @param [in] min: range minimum.
* @param [in] max: range maximum.
*
* @return random number;
*/
uint32_t app_get_random_num32(uint32_t min, uint32_t max);
/**
* @brief app_plc_tx() - send data to destination address throw plc, add append
* info before data.
*
* @param [in] data: data to send.
* @param [in] data_length: data length to send.
* @param [in] dst_addr: destination address.
* @param [in] id: APP id.
* @param [in] tx_info: append info.
*
* @return ERR_OK: send succeeded;
* @return ERR_FAIL: send failed;
*/
uint32_t app_plc_tx(uint8_t *data, uint16_t data_length, uint8_t *dst_addr,
uint16_t id, append_tx_info_t *tx_info);
#ifdef __cplusplus
}
#endif
#endif /* _APP_COMMON_H_ */