DeviceInfo.c 4.8 KB
#include <stdio.h>
#include <string.h>
#include "JZsdkLib.h"
#include "BaseConfig.h"

#include "./DeviceMessage/DeviceMessage.h"
#include "DeviceInfo/DeviceInfo.h"
#include "DeviceInfo/HardwareInfo/HardwareInfo.h"

#include "JZsdk_Hal.h"


static struct T_DeviceInfo g_DeviceInfo[6]; //最多6台设备组成为一台机
int g_DeviceInfoNum = 0; //设备总数

/***************************************************
 * 
 *  设备信息初始化
 *  暂时无用
 * 
 * *************************************************/
T_JZsdkReturnCode DeviceInfo_Init()
{
    //硬件版本号初始化
    HardwareInfo_Init();

    //序列号模块初始化
    SerialMAT_Init();

    //设备打印信息模块初始化
    DeviceMessage_Init();

    //获取当前设备的序列号
    unsigned char SerialNumber[30];
    int SerialNumberLen = 0;
    SerialMAT_Get_SerialNumber(SerialNumber, &SerialNumberLen);

    //设备设备信息 设备id
    DeviceInfo_IncreaseDeviceId(DEVICE_VERSION);

    //设置设备信息 序列号
    DeviceInfo_IncreaseSerialNumber(DEVICE_VERSION, SerialNumber, SerialNumberLen);

    //设置设备信息 版本号
    DeviceInfo_IncreaseVersion(DEVICE_VERSION, MAJOR_VERSION, MINOR_VERSION, MODIFY_VERSION, DEBUG_VERSION);

    JZSDK_LOG_INFO("MODULE_DEVICE_INFO_INIT_COMPLETE");
}

/*********************
 * 
 *  获取所有设备信息的数量
 * 
 * 
 * ************/
int DeviceInfo_GetDeviceInfoNum()
{
    return g_DeviceInfoNum;
}


/************************
 * 
 *  增加设备名
 * 
 * *****************/
T_JZsdkReturnCode DeviceInfo_IncreaseDeviceId(int DeviceID)
{
    //检查一遍是否存在
    for (int i = 0; i < g_DeviceInfoNum ; i++)
    {
        if (g_DeviceInfo[i].DeviceID == DeviceID)
        {
            return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
        }
    }
    
    //不存在则写入新的
    g_DeviceInfo[g_DeviceInfoNum].DeviceID = DeviceID;
    g_DeviceInfoNum++;

    if (g_DeviceInfoNum >= 6)
    {
        JZSDK_LOG_ERROR("错误,写入了超过5个设备");
        g_DeviceInfoNum = 5;
    }
    
    JZSDK_LOG_INFO("设备信息记录 新设备0x%x",DeviceID);
    
    return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}

/**********************************
 * 
 *  增加设备序列号
 * 
 * 
 * *****************************/
T_JZsdkReturnCode DeviceInfo_IncreaseSerialNumber(int DeviceID, unsigned char *SerialNumber, int SerialNumberLen)
{
    //检查一遍是否存在
    for (int i = 0; i < g_DeviceInfoNum ; i++)
    {
        if (g_DeviceInfo[i].DeviceID == DeviceID)
        {
            //存在则写入新的
            memcpy(g_DeviceInfo[i].SerialNumber, SerialNumber, SerialNumberLen);

            JZSDK_LOG_INFO("增加设备0x%x 序列号号成功 %s", DeviceID, g_DeviceInfo[i].SerialNumber);

            return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
        }
    }

    //如果不存在
    JZSDK_LOG_ERROR("增加设备0x%x 序列号%s 失败,未添加设备", DeviceID, SerialNumber);

    return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}

/****************************************
 * 
 *  增加设备版本号
 * 
 * 
 * 
***************************************/
T_JZsdkReturnCode DeviceInfo_IncreaseVersion(int DeviceID, unsigned int MajorVersion, unsigned int MinjorVersion, unsigned int ModifyVersion, unsigned int DebugVersion)
{
    //检查一遍是否存在
    for (int i = 0; i < g_DeviceInfoNum ; i++)
    {
        if (g_DeviceInfo[i].DeviceID == DeviceID)
        {
            //存在则写入新的
            g_DeviceInfo[i].MajorVersion = MajorVersion;
            g_DeviceInfo[i].MinjorVersion = MinjorVersion;
            g_DeviceInfo[i].ModifyVersion = ModifyVersion;
            g_DeviceInfo[i].DebugVersion = DebugVersion;

            JZSDK_LOG_INFO("增加设备0x%x 版本号成功 %x.%x.%x.%x", DeviceID,g_DeviceInfo[i].MajorVersion,g_DeviceInfo[i].MinjorVersion,g_DeviceInfo[i].ModifyVersion,g_DeviceInfo[i].DebugVersion);

            return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
        }
    }

    //如果不存在
    JZSDK_LOG_ERROR("增加设备0x%x 版本号失败,未添加设备", DeviceID);

    return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}

/*******************
 * 
 *  根据序号获取设备信息
 * 
 * 
 * ****************/
T_JZsdkReturnCode DeviceInfo_GetDeviceInfo(int DeviceIndex, T_DeviceInfo *DeviceInfo)
{
    if (DeviceIndex >= g_DeviceInfoNum)
    {
        return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
    }

    memcpy(DeviceInfo, &g_DeviceInfo[DeviceIndex], sizeof(T_DeviceInfo));

    return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}

/*********************
 * 
 *  查看设备是否存在
 * 
 * 
 * ********************/
int DeviceInfo_IsExist(int DeviceID)
{
    for (int i = 0; i < g_DeviceInfoNum ; i++)
    {
        if (g_DeviceInfo[i].DeviceID == DeviceID)
        {
            return JZ_FLAGCODE_ON;
        }
    }

    return JZ_FLAGCODE_OFF;
}