171 lines
3.9 KiB
C
Executable File
171 lines
3.9 KiB
C
Executable File
#include "cmsis_os.h"
|
|
#include "iniparser.h"
|
|
#define CONFIG_NAME "Config.ini"
|
|
|
|
struct DataInfo_t
|
|
{
|
|
int InitData;
|
|
int VolumeData;
|
|
int LanguageVersion;
|
|
};
|
|
|
|
#define TASK1_STK_SIZE 512
|
|
void task1(void *arg);
|
|
osThreadDef(task1, osPriorityNormal, 1, TASK1_STK_SIZE);
|
|
|
|
void task1(void *arg)
|
|
{
|
|
int Len = -1;
|
|
int Ret = -1;
|
|
char Buf[128];
|
|
char *DataPtr = NULL;
|
|
struct DataInfo_t Data;
|
|
FILE *IniTest = NULL ;
|
|
FILE *DefaultIni = NULL;
|
|
dictionary *ConfigIni = NULL;
|
|
|
|
/*1. Create ini config file*/
|
|
IniTest = fopen(CONFIG_NAME, "w");
|
|
if(NULL == IniTest)
|
|
{
|
|
printf("IniTest is Null!\n");
|
|
return ;
|
|
}
|
|
|
|
fprintf(IniTest,
|
|
"[Setting]\n"
|
|
"init_data=0;\n"
|
|
"volume_data=1;\n"
|
|
"language_version=1;\n"
|
|
);
|
|
|
|
Ret = fclose(IniTest);
|
|
if(Ret != 0)
|
|
{
|
|
printf("close IniTest fail!\n");
|
|
return ;
|
|
}
|
|
|
|
IniTest = NULL;
|
|
|
|
IniTest = fopen(CONFIG_NAME, "r");
|
|
if(NULL == IniTest)
|
|
{
|
|
printf("IniTest is Null!\n");
|
|
return ;
|
|
}
|
|
|
|
memset(Buf, 0, sizeof(Buf));
|
|
while(fgets(Buf, sizeof(Buf), IniTest))
|
|
{
|
|
printf("Buf: %s", Buf);
|
|
}
|
|
|
|
fclose(IniTest);
|
|
IniTest = NULL;
|
|
|
|
putchar('\n');
|
|
|
|
/*2. Test read ini config file data*/
|
|
ConfigIni = iniparser_load(CONFIG_NAME);
|
|
if(NULL == ConfigIni)
|
|
{
|
|
printf("ConfigIni is NULL!\n");
|
|
return ;
|
|
}
|
|
|
|
//iniparser_dump(ConfigIni, stderr);
|
|
Data.InitData = iniparser_getint(ConfigIni,"Setting:init_data",-1);
|
|
if(-1 == Data.InitData)
|
|
{
|
|
printf("iniparser_getint fail!\n");
|
|
return ;
|
|
}
|
|
Data.VolumeData = iniparser_getint(ConfigIni,"Setting:volume_data",-1);
|
|
if(-1 == Data.VolumeData)
|
|
{
|
|
printf("iniparser_getint fail!\n");
|
|
return ;
|
|
}
|
|
Data.LanguageVersion = iniparser_getint(ConfigIni,"Setting:language_version",-1);
|
|
if(-1 == Data.LanguageVersion)
|
|
{
|
|
printf("iniparser_getint fail!\n");
|
|
return ;
|
|
}
|
|
|
|
printf("Data.InitData:%d\n", Data.InitData);
|
|
printf("Data.VolumeData:%d\n", Data.VolumeData);
|
|
printf("Data.LanguageVersion:%d\n", Data.LanguageVersion);
|
|
|
|
/* 3. Set modify one of the parameters*/
|
|
iniparser_set(ConfigIni,"Setting:init_data", "111");
|
|
iniparser_set(ConfigIni,"Setting:volume_data", "222");
|
|
iniparser_set(ConfigIni,"Setting:language_version", "333");
|
|
|
|
putchar('\n');
|
|
|
|
/*4. Write data to int config file*/
|
|
DefaultIni = fopen(CONFIG_NAME, "w");
|
|
if(NULL == DefaultIni)
|
|
{
|
|
printf("DefaultIni is NULL!\n");
|
|
return ;
|
|
}
|
|
iniparser_dump_ini(ConfigIni, DefaultIni);
|
|
Ret = fclose(DefaultIni);
|
|
if(Ret != 0)
|
|
{
|
|
printf("close DefaultIni fail!\n");
|
|
return ;
|
|
}
|
|
|
|
/*5.Read the modified Config ini file data*/
|
|
Data.InitData = iniparser_getint(ConfigIni, "Setting:init_data", -1);
|
|
if(-1 == Data.InitData)
|
|
{
|
|
printf("iniparser_getint fail!\n");
|
|
return ;
|
|
}
|
|
Data.VolumeData = iniparser_getint(ConfigIni, "Setting:volume_data", -1);
|
|
if(-1 == Data.VolumeData)
|
|
{
|
|
printf("iniparser_getint fail!\n");
|
|
return ;
|
|
}
|
|
Data.LanguageVersion = iniparser_getint(ConfigIni, "Setting:language_version", -1);
|
|
if(-1 == Data.LanguageVersion)
|
|
{
|
|
printf("iniparser_getint fail!\n");
|
|
return ;
|
|
}
|
|
|
|
printf("Data.InitData:%d\n", Data.InitData);
|
|
printf("Data.VolumeData:%d\n", Data.VolumeData);
|
|
printf("Data.LanguageVersion:%d\n", Data.LanguageVersion);
|
|
|
|
iniparser_freedict(ConfigIni);
|
|
|
|
while(1)
|
|
{
|
|
printf("Ini test success!\n");
|
|
osDelay(1000);
|
|
}
|
|
}
|
|
|
|
void application_entry(void *arg)
|
|
{
|
|
osThreadCreate(osThread(task1), NULL); // Create task1
|
|
}
|
|
|
|
int main(void)
|
|
{
|
|
osKernelInitialize(); //TOS Tiny kernel initialize
|
|
application_entry(NULL);
|
|
osKernelStart(); //Start TOS Tiny
|
|
|
|
while (1)
|
|
{
|
|
}
|
|
}
|