/******************************************************************************
* file include/common.h
* author YuLiang
* version 1.0.0
* date 10-Sep-2021
* brief This file provides all the headers of the common functions.
******************************************************************************
* Attention
*
*
© COPYRIGHT(c) 2021 LandPower
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* 3. Neither the name of LandPower nor the names of its contributors may be used to
* endorse or promote products derived from this software without specific
* prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
******************************************************************************/
#ifndef _COMMON_H_
#define _COMMON_H_
/* Includes ------------------------------------------------------------------*/
#include
#include
#include
#include
#include
#include
#include
#include "array.h"
#include "better_log.h"
#include "dbg.h"
#include "memory.h"
#include "thread_monitor.h"
/* Define --------------------------------------------------------------------*/
#define FALSE 0
#define TRUE 1
#define E_NONE 0
#define E_ERROR -1
#define E_BAD_PARAM -2
#define E_MEM -3
#define E_SYS_CALL -4
#define E_NULL -5
#define E_NOT_FOUND -6
#define E_NOT_IDENTIFY -7
#define E_TIMEOUT -8
#define E_SAME -9
#define OUT
#define BACKTRACE_SIZE 20
#define TIME_STR_LEN 64
#define RECV_MSG_LEN 1536
#define DEVICE_INVALID 255
#define FILE_NAME_LEN 128
#define DIR_PATH_LEN 512
#define INET_ADDRSTRLEN 16
#define INET6_ADDRSTRLEN 46
#define ETH_GIS_DEV_ID_LEN 16
#define ETH_GIS_CMD_PARAM_LEN 16
#define DEVICE_ID_LEN 6
#define MAC_ADDR_LEN 6
#define IP_ADDR_LEN 4
#define DEV_DATA_LEN 1000
#define DEV_DATA_BITMAP_LEN 8
#define DEV_NAME_STR_LEN 32
#define CPUMS_DIFF(prev, now) ((now)>=(prev)?(now)-(prev):(((unsigned int)-1)-(prev) + (now)))
/* Does the I/O error indicate that the operation should be retried later? */
#define ERRNO_IO_RETRY(EN) \
(((EN) == EAGAIN) || ((EN) == EWOULDBLOCK) || ((EN) == EINTR))
/* Exported types ------------------------------------------------------------*/
typedef int8_t bool;
/* Exported macro ------------------------------------------------------------*/
#define BITMAP_SET(t, b) ((t) |= 1 << (b))
#define BITMAP_RESET(t, b) ((t) &= ~(1 << (b)))
#define IS_BITMAP_SET(t, b) ((t) & (1 << b))
typedef enum _BOOT_MSG
{
BOOT_NONE = 0,
BOOT_LOCAL_SERVER_IP_CHANGE,
BOOT_LOCAL_SERVER_PORT_CHANGE,
BOOT_LOCAL_IP_CHANGE,
BOOT_LOCAL_HOST_NAME_CHANGE,
BOOT_LOCAL_RESET,
BOOT_LOCAL_ARM_UPGRADE,
BOOT_LOCAL_FPGA_UPGRADE,
BOOT_REMOTE_SERVER_IP_CHANGE,
BOOT_REMOTE_SERVER_PORT_CHANGE,
BOOT_REMOTE_IP_CHANGE,
BOOT_REMOTE_HOST_NAME_CHANGE,
BOOT_REMOTE_RESET,
BOOT_UPGRADE_ALL,
BOOT_UPGRADE_ARM,
BOOT_UPGRADE_FPGA,
BOOT_SYSTEM_RESET,
BOOT_DAU_ERR_RESET,
BOOT_PPP_NO_FOUND,
BOOT_PPP_FOUND_LINK_FAIL,
BOOT_TTYUSB_NO_FOUND,
BOOT_MAX,
} BOOT_MSG;
typedef struct
{
BOOT_MSG type; // 重启类型
char *msg; // 重启日志
} boot_msg_t;
#define LD_E_RETURN(_module_, _f_) \
do { \
int _rv_ = E_ERROR; \
if ((_rv_ = _f_) != E_NONE) \
{ \
DBG(_module_, "ERROR return %d!\r\n", _rv_); \
return _rv_; \
} \
} while(0)
#define LD_NULL_RETURN(_module_, _f_) \
do { \
if (NULL == (_f_)) \
{ \
DBG(_module_, "ERROR return %d!\r\n", _rv_); \
return E_NULL; \
} \
} while(0)
/* Extern global variables ---------------------------------------------------*/
/* Extern functions ----------------------------------------------------------*/
extern char *str_to_lower(char *str);
extern char *str_omit_space(char *str, bool omit_end);
extern size_t time_string(int32_t timestamp_precision, char *buf, size_t buflen);
extern const char *safe_strerror(int errnum);
extern void buf_print(char *buf, int32_t len);
extern int32_t mac_generate_from_ip(char *ip_str, uint8_t *mac);
extern uint16_t crc16(uint8_t *data, uint16_t size);
extern uint16_t crc16_modbus(uint8_t *data, uint16_t size);
extern void speed_detection_stat(void);
extern void speed_detection_end(void);
extern int printh(const char *format, ...);
extern char* version_get();
extern char* version_date_get();
extern uint16_t sofrware_version_get(void);
extern int32_t str_to_mac(char *mac_str, OUT uint8_t *mac);
extern int32_t str_to_id(char *id_str, OUT uint32_t *id);
extern int32_t bitmap_set(uint8_t *buf, int32_t nbit, int32_t buf_len);
extern int32_t bitmap_reset(uint8_t *buf, int32_t nbit, int32_t buf_len);
extern int32_t is_bitmap_set(uint8_t *buf, int32_t nbit, int32_t buf_len);
extern int32_t time_str_to_long(char *date, char *time, uint32_t *t);
extern uint16_t version_str_to_int(void);
extern void time_set(time_t timestamp);
extern void reboot_system(int module, BOOT_MSG type);
extern void set_nonblock(int sock);
int StrToHex(unsigned char *hex, char *str, int slen);
unsigned int dev_id_2_hex(char *dev_num);
#endif
/************************ (C) COPYRIGHT LandPower ***** END OF FILE ****************/