DeviceInfo.c 6.9 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"

typedef struct DeviceInfo
{
    unsigned int Port;
    unsigned int DeviceID;
    unsigned char SerialNumber[30];
    unsigned int MajorVersion;
    unsigned int MinjorVersion;
    unsigned int ModifyVersion;
    unsigned int DebugVersion;
}DeviceInfo;

static struct DeviceInfo g_DeviceID[6];
int g_DeviceIDNum = 0; //设备总数

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

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

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

    //设备本地设备名字
    DeviceInfo_SetDeviceName(DEVICE_PSDK, DEVICE_VERSION);

    //设置本地序列号
    unsigned char SerialNumber[30];
    int SerialNumberLen = 0;
    SerialMAT_Get_SerialNumber(SerialNumber, &SerialNumberLen);
    DeviceInfo_SetAllSerialNumber(DEVICE_VERSION, SerialNumber, SerialNumberLen);

    //设置本地的版本号
    DeviceInfo_SetAllVerision(DEVICE_PSDK, MAJOR_VERSION, MINOR_VERSION, MODIFY_VERSION, DEBUG_VERSION);

    JZSDK_LOG_INFO("MODULE_DEVICE_INFO_INIT_COMPLETE");
}


/************************
 * 
 *  设置设备名
 * 
 * *****************/
T_JZsdkReturnCode DeviceInfo_SetDeviceName(unsigned int Port, int DeviceID)
{
    //检查一遍是否存在
    for (int i = 0; i < g_DeviceIDNum; i++)
    {
        if (g_DeviceID[i].Port == Port)
        {
            g_DeviceID[i].Port = Port;
            g_DeviceID[i].DeviceID = DeviceID;
            printf("接口0x%x, id:0x%x\n",Port,DeviceID);
            return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
        }
    }
    
    //不存在则写入新的
    g_DeviceID[g_DeviceIDNum].Port = Port;
    g_DeviceID[g_DeviceIDNum].DeviceID = DeviceID;
    g_DeviceIDNum++;
    if (g_DeviceIDNum == 6)
    {
        JZSDK_LOG_ERROR("错误,写入了超过5个设备");
        g_DeviceIDNum = 5;
    }
    
    JZSDK_LOG_INFO("接入新设备0x%x, 0x%x",Port,DeviceID);
    
    return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}

/************************
 * 
 *  查询设备名
 * 
 * *****************/
T_JZsdkReturnCode DeviceInfo_GetDeviceName(unsigned int Port, int *DeviceID)
{
    if (DeviceID == NULL)
    {
        return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER;
    }
    
    //检查一遍是否存在
    for (int i = 0; i < g_DeviceIDNum; i++)
    {
        if (g_DeviceID[i].Port == Port)
        {
            *DeviceID = g_DeviceID[i].DeviceID;
            return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
        }
    } 

    return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}


/************************
 * 
 *  查询所有设备名
 * 
 * *****************/
T_JZsdkReturnCode DeviceInfo_GetAllDeviceName(unsigned int *DeviceNum, unsigned int DeviceID[][2])
{
    if (DeviceNum == NULL || DeviceID == NULL)
    {
        return JZ_ERROR_SYSTEM_MODULE_CODE_INVALID_PARAMETER;
    }

    *DeviceNum = g_DeviceIDNum;
    if (*DeviceNum == 0)
    {
        return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
    }
    
    //检查一遍是否存在
    for (int i = 0; i < g_DeviceIDNum; i++)
    {
        DeviceID[i][0] = g_DeviceID[i].Port;
        DeviceID[i][1] = g_DeviceID[i].DeviceID;
    }  
    
    return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}


/************************
 * 
 *  设置所有序列号
 * 
 * *****************/
T_JZsdkReturnCode DeviceInfo_SetAllSerialNumber(unsigned int DeviceId, unsigned char *SerialNumber, unsigned int SerialNumberLen)
{

    //检查一遍设备是否存在
    for (int i = 0; i < g_DeviceIDNum; i++)
    {
        if (g_DeviceID[i].DeviceID == DeviceId)
        {
            memcpy(g_DeviceID[i].SerialNumber, SerialNumber, SerialNumberLen);
            JZSDK_LOG_INFO("序列号0x%x %s",g_DeviceID[i].SerialNumber, g_DeviceID[i].SerialNumber);
            return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
        }
    }

    JZSDK_LOG_ERROR("设置所有序列号失败");
    return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}


/************************
 * 
 *  返回设备序列号
 * 
 * *****************/
T_JZsdkReturnCode DeviceInfo_GetAllSerialNumber(unsigned int DeviceId, unsigned char *SerialNumber, unsigned int *SerialNumberLen)
{

    //检查一遍设备是否存在
    for (int i = 0; i < g_DeviceIDNum; i++)
    {
        if (g_DeviceID[i].DeviceID == DeviceId)
        {
            *SerialNumberLen = strlen(g_DeviceID[i].SerialNumber);
            memcpy(SerialNumber, g_DeviceID[i].SerialNumber, *SerialNumberLen);
            return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
        }
    }

    JZSDK_LOG_ERROR("该设备未登记");
    return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}




/************************
 * 
 *  设置所有版本号
 * 
 * *****************/
T_JZsdkReturnCode DeviceInfo_SetAllVerision(unsigned int DeviceId, unsigned int MajorVersion, unsigned int MinjorVersion, unsigned int ModifyVersion, unsigned int DebugVersion)
{
    //检查一遍设备是否存在
    for (int i = 0; i < g_DeviceIDNum; i++)
    {
        if (g_DeviceID[i].DeviceID == DeviceId)
        {
            g_DeviceID[i].MajorVersion = MajorVersion;
            g_DeviceID[i].MinjorVersion = MinjorVersion;
            g_DeviceID[i].ModifyVersion = ModifyVersion;
            g_DeviceID[i].DebugVersion = DebugVersion;

            JZSDK_LOG_INFO("设置版本号 0x%x %d %d %d %d",g_DeviceID[i].SerialNumber, 
                                                        g_DeviceID[i].MajorVersion,
                                                        g_DeviceID[i].MinjorVersion,
                                                        g_DeviceID[i].ModifyVersion,
                                                        g_DeviceID[i].DebugVersion
            );
            return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
        }
    }

    JZSDK_LOG_ERROR("设置失败,该设备未登记");
    return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}


/************************
 * 
 *  返回设备版本号
 * 
 * *****************/
T_JZsdkReturnCode DeviceInfo_GetAllVerision(unsigned int DeviceId, unsigned int *MajorVersion, unsigned int *MinjorVersion, unsigned int *ModifyVersion, unsigned int *DebugVersion)
{
    //检查一遍设备是否存在
    for (int i = 0; i < g_DeviceIDNum; i++)
    {
        if (g_DeviceID[i].DeviceID == DeviceId)
        {
            *MajorVersion = g_DeviceID[i].MajorVersion;
            *MinjorVersion = g_DeviceID[i].MinjorVersion;
            *ModifyVersion = g_DeviceID[i].ModifyVersion;
            *DebugVersion = g_DeviceID[i].DebugVersion;
            return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
        }
    }

    JZSDK_LOG_ERROR("返回失败,该设备未登记");
    return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}