HardwareInfo.c 3.2 KB
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "JZsdkLib.h"

#define HARDWARE_DIR "/root/HardwareIdeNum"
#define MAX_LINE_LENGTH 100  

static int HardwareInfo_MajorVersion = 0;
static int HardwareInfo_MinorVersion = 0;
static int HardwareInfo_ModifyVersion = 0;
static int HardwareInfo_DebugVersion = 0;

/***********************
 *  获取硬件版本号
 *  major 0
 *  minor 1
 *  modiy 2
 *  debug 3
 * ************/
T_JZsdkReturnCode HardwareInfo_GetVersion(int flag)
{
    unsigned int version = 0;

    switch (flag)
    {
        case 0:
            version = HardwareInfo_MajorVersion;
        break;

        case 1:
            version = HardwareInfo_MinorVersion;
        break;        
        
        case 2:
            version = HardwareInfo_ModifyVersion;
        break;        
        
        case 3:
            version = HardwareInfo_DebugVersion;       
        break;  

        default:
            break;
    }

    return version;
}

T_JZsdkReturnCode HardwareInfo_Init()
{
    T_JZsdkReturnCode ret;
    ret = JZsdk_check_file_exists(HARDWARE_DIR);
    if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
    {
        JZSDK_LOG_ERROR("无硬件版本号");
        return ret;
    }
    
    //加载硬件版本号
    FILE *file;  
    char buffer[MAX_LINE_LENGTH];  
    int num1, num2, num3, num4;  
    char str[MAX_LINE_LENGTH];  
  
    // 打开文件  
    file = fopen(HARDWARE_DIR, "r");  
    if (file == NULL) {  
        JZSDK_LOG_ERROR("Error opening file");  
        return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;  
    }  
  
    // 读取前四行到整数变量  
    if (fscanf(file, "%d", &num1) != 1) {  
        JZSDK_LOG_ERROR("Error reading hardware number 1");  
        fclose(file);  
        return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;  
    }  
    if (fscanf(file, "%d", &num2) != 1) {  
        JZSDK_LOG_ERROR("Error reading hardware number 2");  
        fclose(file);  
        return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;  
    }  
    if (fscanf(file, "%d", &num3) != 1) {  
        JZSDK_LOG_ERROR("Error reading hardware number 3");  
        fclose(file);  
        return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;  
    }  
    if (fscanf(file, "%d", &num4) != 1) {  
        JZSDK_LOG_ERROR("Error reading hardware number 4");  
        fclose(file);  
        return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;  
    }  
  
    // 读取第五行到字符串变量  
    // 清除之前的换行符  
    fgetc(file); // 读取并忽略换行符  
    if (fgets(str, MAX_LINE_LENGTH, file) == NULL) 
    {  
        JZSDK_LOG_ERROR("Error reading string");  
        fclose(file);  
        return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;  
    }  
  
    // 去除字符串末尾的换行符(如果有)  
    str[strcspn(str, "\n")] = 0;  

    HardwareInfo_MajorVersion = num1;
    HardwareInfo_MinorVersion = num2;
    HardwareInfo_ModifyVersion = num3;
    HardwareInfo_DebugVersion = num4;

    // 输出结果  
    JZSDK_LOG_INFO("Hardware Version: %d, %d, %d, %d\n", HardwareInfo_MajorVersion, HardwareInfo_MinorVersion, HardwareInfo_ModifyVersion, HardwareInfo_DebugVersion);  
    JZSDK_LOG_INFO("Hardware Info: %s\n", str);  
  
    // 关闭文件  
    fclose(file);  

    return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}