UserInfo.c 4.6 KB
#include <stdio.h>
#include <stdlib.h>
#include <string.h>  

#include "JZsdkLib.h"
#include "version_choose.h"
#include "BaseConfig.h"

#define USER_INFO_DIR "/root/JzUserInfo.txt"

typedef struct T_JZUserInfo {
    char appName[32]; 
                          
    char appId[16]; 
                      
    char appKey[32]; 
                        
    char appLicense[512];
                             
    char developerAccount[64]; 

    char baudRate[7];

    int HaveWrite;
}T_JZUserInfo;

static T_JZUserInfo g_UserInfo = {0};

T_JZsdkReturnCode JZsdk_UserInfo_Read(T_JZUserInfo *UserInfo)
{
    //如果没有写入过使用者信息
    if (g_UserInfo.HaveWrite == JZ_FLAGCODE_OFF)
    {
        //检查本地是否存在使用者信息
        if(JZsdk_check_file_exists(USER_INFO_DIR) != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
        {
            JZSDK_LOG_ERROR("未存在使用者信息");
            return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
        }

        //读取本地使用者信息
        FILE* file = fopen(USER_INFO_DIR, "r");
        if (file != NULL)
        {
            char line[256];
            while (fgets(line, sizeof(line), file))
            {
                // 去除行尾的换行符
                line[strcspn(line, "\n")] = 0;

                // 解析键值对
                char* key = strtok(line, "=");
                char* value = strtok(NULL, "=");

                if (key != NULL && value != NULL)
                {
                    if (strcmp(key, "appName") == 0)
                    {
                        strncpy(g_UserInfo.appName, value, sizeof(g_UserInfo.appName) - 1);
                        g_UserInfo.appName[sizeof(g_UserInfo.appName) - 1] = '\0';
                        JZSDK_LOG_DEBUG("appName:%s", g_UserInfo.appName);
                    }
                    else if (strcmp(key, "appId") == 0)
                    {
                        strncpy(g_UserInfo.appId, value, sizeof(g_UserInfo.appId) - 1);
                        g_UserInfo.appId[sizeof(g_UserInfo.appId) - 1] = '\0';
                        JZSDK_LOG_DEBUG("appId:%s", g_UserInfo.appId);
                    }
                    else if (strcmp(key, "appKey") == 0)
                    {
                        strncpy(g_UserInfo.appKey, value, sizeof(g_UserInfo.appKey) - 1);
                        g_UserInfo.appKey[sizeof(g_UserInfo.appKey) - 1] = '\0';
                        JZSDK_LOG_DEBUG("appKey:%s", g_UserInfo.appKey);
                    }
                    else if (strcmp(key, "appLicense") == 0)
                    {
                        strncpy(g_UserInfo.appLicense, value, sizeof(g_UserInfo.appLicense) - 1);
                        g_UserInfo.appLicense[sizeof(g_UserInfo.appLicense) - 1] = '\0';
                        JZSDK_LOG_DEBUG("appLicense:%s", g_UserInfo.appLicense);
                    }
                    else if (strcmp(key, "baudRate") == 0)
                    {
                        strncpy(g_UserInfo.baudRate, value, sizeof(g_UserInfo.baudRate) - 1);
                        g_UserInfo.baudRate[sizeof(g_UserInfo.baudRate) - 1] = '\0';
                        JZSDK_LOG_DEBUG("baudRate:%s", g_UserInfo.baudRate);
                    }
                    else if (strcmp(key, "developerAccount") == 0)
                    {
                        strncpy(g_UserInfo.developerAccount, value, sizeof(g_UserInfo.developerAccount) - 1);
                        g_UserInfo.developerAccount[sizeof(g_UserInfo.developerAccount) - 1] = '\0';
                        JZSDK_LOG_DEBUG("developerAccount:%s", g_UserInfo.developerAccount);
                    }
                }
            }
            fclose(file);
            JZSDK_LOG_DEBUG("从文件读取并填充APP信息完毕");
        }
        else
        {
            JZSDK_LOG_ERROR("未存在使用者信息");
            return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
        }
    }
}


T_JZsdkReturnCode JZsdk_UserInfo_Write(T_JZUserInfo *UserInfo)
{
    
    // 写入数据
    FILE *file2 = fopen(USER_INFO_DIR, "w");
    if (file2 != NULL)
    {
        // 按照相同的键值对格式写入
        fJZSDK_LOG_DEBUG(file2, "appName=%s\n", UserInfo->appName);
        fJZSDK_LOG_DEBUG(file2, "appId=%s\n", UserInfo->appId);
        fJZSDK_LOG_DEBUG(file2, "appKey=%s\n", UserInfo->appKey);
        fJZSDK_LOG_DEBUG(file2, "appLicense=%s\n", UserInfo->appLicense);
        fJZSDK_LOG_DEBUG(file2, "baudRate=%s\n", UserInfo->baudRate);
        fJZSDK_LOG_DEBUG(file2, "developerAccount=%s\n", UserInfo->developerAccount);
        
        fclose(file2);
        JZSDK_LOG_INFO("使用者信息写入成功");
        return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
    }

    JZSDK_LOG_DEBUG("无法正常写入使用者信息");

    return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}