672 lines
19 KiB
C
672 lines
19 KiB
C
/*----------------------------------------------------------------------------
|
||
* Copyright (c) Fenda Technologies Co., Ltd. 2021. All rights reserved.
|
||
*
|
||
* Description: sql_message.c
|
||
*
|
||
* Author: saimen
|
||
*
|
||
* Create: 2024-06-08
|
||
*--------------------------------------------------------------------------*/
|
||
#include <string.h>
|
||
#include <stdio.h>
|
||
#include "sys_typedef.h"
|
||
#include "sys_config.h"
|
||
#include "linux/crc32.h"
|
||
#include "sql_message.h"
|
||
|
||
/**********************************************************************************************************************
|
||
* DEFINE
|
||
*/
|
||
#define ENABLE_STATIC_PRINT true
|
||
#define static_print_error(...) sys_sql_log_e(__VA_ARGS__) //错误信息打印一般常开
|
||
#define static_print_warn(...) sys_sql_log_w(__VA_ARGS__) //警告信息打印一般常开
|
||
#if ENABLE_STATIC_PRINT
|
||
#define static_print_debug(...) sys_sql_log_d(__VA_ARGS__)
|
||
#else
|
||
#define static_print_debug(...)
|
||
#endif
|
||
|
||
|
||
#define FILE_VERSION_SETTING (1)
|
||
#define FILE_PATH_SETTING "/system/sql_message.bin"
|
||
|
||
#define MESSAGE_LIST_MAX_NUM 50
|
||
#define MESSAGE_TITLE_LENGTH 24
|
||
#define MESSAGE_TEXT_LENGTH 256
|
||
#define MAX_MESSAGE_NUM 50
|
||
|
||
typedef struct {
|
||
uint32_t uuid; //从蓝牙协议里取到的id,循环码,uuid不是下标号,是唯一标识,APP分配
|
||
uint32_t timestamp; //更新时间 UTC 秒
|
||
bool valid; //数据有效性,false-删除,true-存在
|
||
bool read_falg; //消息已读标志,false-未读,true-已读
|
||
uint8_t encoder_type; //文本编码类型
|
||
message_enum msg_type; //消息类型
|
||
//char title[MESSAGE_TITLE_LENGTH]; //title标题
|
||
//char app_name[MESSAGE_TITLE_LENGTH]; //应用名称信息
|
||
char user_name[MESSAGE_TITLE_LENGTH]; //用户名称信息
|
||
char user_num[MESSAGE_TITLE_LENGTH]; //用户帐号信息
|
||
char text[MESSAGE_TEXT_LENGTH]; //消息文本
|
||
} message_info_t;
|
||
|
||
#pragma pack(4) //alignment 4 bytes
|
||
typedef struct {
|
||
uint32_t init_flag:8; //标记模块是否初始化。=0 无效数据;=1 正常数据;=2 恢复数据。
|
||
uint32_t version:8; //结构体版本
|
||
|
||
uint8_t en_message_notify; //使能消息通知
|
||
message_info_t msg_list[MESSAGE_LIST_MAX_NUM]; //消息参数保存
|
||
|
||
//uint8_t revs[1]; //保证8字节对齐
|
||
uint32_t crc32;
|
||
} message_def_t;
|
||
#pragma pack()
|
||
|
||
static message_def_t g_sql_message; //设置实例
|
||
static bool g_message_need_save = false;
|
||
|
||
/**
|
||
* @brief 重置系统设置数据.
|
||
* @retval int|返回结果,0=成功.
|
||
*/
|
||
static int sql_message_restore(void)
|
||
{
|
||
int ret = RET_SUCCESS;
|
||
static_print_warn("sql_message_restore()\r\n");
|
||
// 设置的默认值
|
||
memset((uint8_t*)&g_sql_message,0,sizeof(message_def_t));
|
||
g_sql_message.version = FILE_VERSION_SETTING;
|
||
g_sql_message.init_flag = 1;
|
||
|
||
g_message_need_save = false;
|
||
return ret;
|
||
}
|
||
|
||
static int8_t sql_message_update_list_sorting(uint8_t *index_list, uint8_t list_len)
|
||
{
|
||
uint8_t i =0 ,j = 0;
|
||
uint8_t count = 0;
|
||
uint8_t temp_index = 0;
|
||
|
||
if(index_list == NULL || list_len > MESSAGE_LIST_MAX_NUM) {
|
||
return RET_ERROR;
|
||
}
|
||
if(list_len < 2) {
|
||
return RET_SUCCESS;
|
||
}
|
||
do{
|
||
count = 0;
|
||
j++;
|
||
for(i=0;i<list_len-j;i++){
|
||
if(g_sql_message.msg_list[index_list[i]].timestamp < g_sql_message.msg_list[index_list[i+1]].timestamp)
|
||
{
|
||
temp_index = index_list[i];
|
||
index_list[i] = index_list[i+1];
|
||
index_list[i+1] = temp_index;
|
||
count++;
|
||
}
|
||
}
|
||
//static_print_debug("sql_message_update_list_sorting:%d-%d",j,count);
|
||
} while(count>0);
|
||
return RET_SUCCESS;
|
||
}
|
||
|
||
static uint8_t sql_message_get_available_message(void)
|
||
{
|
||
uint8_t i =0;
|
||
uint8_t oldest_index = MESSAGE_LIST_MAX_NUM;
|
||
for(i=0;i<MESSAGE_LIST_MAX_NUM;i++)
|
||
{
|
||
if(g_sql_message.msg_list[i].valid)
|
||
{
|
||
if(oldest_index == MESSAGE_LIST_MAX_NUM) {
|
||
oldest_index = i;
|
||
}else{
|
||
if(g_sql_message.msg_list[oldest_index].timestamp > g_sql_message.msg_list[i].timestamp) {
|
||
oldest_index = i;
|
||
}
|
||
}
|
||
} else{
|
||
return i;
|
||
}
|
||
}
|
||
return oldest_index;
|
||
}
|
||
|
||
// 函数用于去除数组中的重复元素,同时保持原始顺序不变
|
||
static int RemoveDuplicatesKeepOrder(uint8_t* nums, uint8_t numsSize) {
|
||
if (numsSize == 0) return 0;
|
||
|
||
uint8_t seen[256] = {0}; // 假设uint8_t的范围为0-255
|
||
int outputIndex = 0;
|
||
|
||
for (int i = 0; i < numsSize; i++) {
|
||
if (!seen[nums[i]]) {
|
||
seen[nums[i]] = 1; // 标记为已见
|
||
nums[outputIndex++] = nums[i]; // 将未重复的元素移动到数组的前面
|
||
}
|
||
}
|
||
|
||
// 返回不重复元素的数量
|
||
return outputIndex;
|
||
}
|
||
|
||
/**********************************************************************************************************************
|
||
* 固定接口
|
||
*/
|
||
/**
|
||
* @brief 初始化系统设置数据.
|
||
* @retval int|返回结果,0=成功.
|
||
*/
|
||
int sql_message_init(void)
|
||
{
|
||
int ret = RET_SUCCESS;
|
||
uint32_t ui32_crc;
|
||
|
||
static_print_warn("[%s],sizeof(message_def_t) = %d\r\n", FILE_PATH_SETTING, sizeof(message_def_t));
|
||
ui32_crc = Crc32Part(0,(const char *)&g_sql_message, sizeof(message_def_t) - 4);
|
||
if(ui32_crc != g_sql_message.crc32 || g_sql_message.version != FILE_VERSION_SETTING)
|
||
{
|
||
sql_message_restore();
|
||
g_message_need_save = true;
|
||
}
|
||
return ret;
|
||
}
|
||
|
||
void* sql_message_get_info(uint32_t *len, char **path)
|
||
{
|
||
g_sql_message.crc32 = Crc32Part(0,(const char *)&g_sql_message, sizeof(g_sql_message) - 4);
|
||
*len = sizeof(g_sql_message);
|
||
*path = (char*)FILE_PATH_SETTING;
|
||
return &g_sql_message;
|
||
}
|
||
|
||
void sql_message_set_save_flag(uint8_t value)
|
||
{
|
||
g_message_need_save = value;
|
||
}
|
||
|
||
uint8_t sql_message_get_save_flag(void)
|
||
{
|
||
return g_message_need_save;
|
||
}
|
||
|
||
/**********************************************************************************************************************
|
||
* 通用接口
|
||
*/
|
||
uint8_t sql_message_get_max_number(void)
|
||
{
|
||
return MESSAGE_LIST_MAX_NUM;
|
||
}
|
||
uint32_t sql_message_get_max_title_length(void)
|
||
{
|
||
return MESSAGE_TITLE_LENGTH;
|
||
}
|
||
|
||
uint32_t sql_message_get_max_detail_length(void)
|
||
{
|
||
return MESSAGE_TEXT_LENGTH;
|
||
}
|
||
|
||
uint8_t sql_message_get_message_num(void)
|
||
{
|
||
uint8_t i;
|
||
uint8_t count = 0;
|
||
for(i=0;i<MESSAGE_LIST_MAX_NUM;i++)
|
||
{
|
||
if(g_sql_message.msg_list[i].valid == true)
|
||
{
|
||
count++;
|
||
}
|
||
}
|
||
return count;
|
||
}
|
||
|
||
/*
|
||
按消息更新时间顺序返回到列表,index_list[0]是最新消息的index。
|
||
*/
|
||
uint8_t sql_message_get_message_index_list(uint8_t *index_list)
|
||
{
|
||
uint8_t i;
|
||
uint8_t count = 0;
|
||
for(i=0;i<MESSAGE_LIST_MAX_NUM;i++)
|
||
{
|
||
if(g_sql_message.msg_list[i].valid)
|
||
{
|
||
index_list[count] = i;
|
||
count++;
|
||
}
|
||
}
|
||
sql_message_update_list_sorting(index_list, count);
|
||
return count;
|
||
}
|
||
|
||
uint8_t sql_message_get_message_type_cnt(message_enum type)
|
||
{
|
||
uint8_t i;
|
||
uint8_t count = 0;
|
||
for(i=0; i<MESSAGE_LIST_MAX_NUM; i++)
|
||
{
|
||
if(g_sql_message.msg_list[i].valid && g_sql_message.msg_list[i].msg_type == type)
|
||
{
|
||
count++;
|
||
}
|
||
}
|
||
return count;
|
||
}
|
||
|
||
/*
|
||
返回某个type的消息列表,index_list[0]是最新消息的index。
|
||
|
||
*/
|
||
uint8_t sql_message_get_message_index_list_by_type(uint8_t *index_list, message_enum type)
|
||
{
|
||
uint8_t i;
|
||
uint8_t count = 0;
|
||
for(i=0;i<MESSAGE_LIST_MAX_NUM;i++)
|
||
{
|
||
if(g_sql_message.msg_list[i].valid && g_sql_message.msg_list[i].msg_type == type)
|
||
{
|
||
index_list[count] = i;
|
||
count++;
|
||
}
|
||
}
|
||
sql_message_update_list_sorting(index_list, count);
|
||
return count;
|
||
}
|
||
uint8_t sql_message_get_message_type_list(uint8_t *type_list)
|
||
{
|
||
uint8_t i;
|
||
uint8_t count = 0;
|
||
uint8_t index_list[MESSAGE_LIST_MAX_NUM];
|
||
count = sql_message_get_message_index_list(index_list);
|
||
uint8_t type_list_temp[MESSAGE_LIST_MAX_NUM];
|
||
for(i=0; i<count; i++)
|
||
{
|
||
uint8_t type = g_sql_message.msg_list[index_list[i]].msg_type;
|
||
type_list_temp[i] = type;
|
||
}
|
||
|
||
uint8_t cnt_no_duplicate = RemoveDuplicatesKeepOrder(type_list_temp, count);
|
||
memcpy(type_list, type_list_temp, cnt_no_duplicate);
|
||
return cnt_no_duplicate;
|
||
}
|
||
|
||
uint8_t sql_message_get_message_type_newest_index(uint8_t type)
|
||
{
|
||
uint8_t i;
|
||
uint8_t count = 0;
|
||
uint8_t index_list[MAX_MESSAGE_NUM];
|
||
count = sql_message_get_message_index_list(index_list);
|
||
for(i=0; i<count; i++)
|
||
{
|
||
if (g_sql_message.msg_list[index_list[i]].msg_type == type)
|
||
{
|
||
return index_list[i];
|
||
}
|
||
}
|
||
return MAX_MESSAGE_NUM;
|
||
}
|
||
|
||
void sql_message_delete_message(uint32_t index)
|
||
{
|
||
if(index >= MESSAGE_LIST_MAX_NUM) {
|
||
return;
|
||
}
|
||
memset(&g_sql_message.msg_list[index], 0, sizeof(message_info_t));
|
||
g_message_need_save = true;
|
||
}
|
||
|
||
void sql_message_delete_message_by_type(message_enum type)
|
||
{
|
||
for (uint8_t i = 0; i < MESSAGE_LIST_MAX_NUM; i++)
|
||
{
|
||
if (g_sql_message.msg_list[i].msg_type == type)
|
||
{
|
||
sql_message_delete_message(i);
|
||
}
|
||
}
|
||
}
|
||
|
||
uint8_t sql_message_new_message(void)
|
||
{
|
||
uint8_t new_index = sql_message_get_available_message();
|
||
static_print_debug("sql_message_new_message(),new_index = %d",new_index);
|
||
if(g_sql_message.msg_list[new_index].valid)
|
||
{
|
||
sql_message_delete_message(new_index);
|
||
}
|
||
return new_index;
|
||
}
|
||
|
||
void sql_message_del_all_messages(void)
|
||
{
|
||
memset(g_sql_message.msg_list, 0, sizeof(message_info_t) * MESSAGE_LIST_MAX_NUM);
|
||
g_message_need_save = true;
|
||
}
|
||
|
||
int32_t sql_message_get_index_by_uuid(uint32_t uuid)
|
||
{
|
||
uint32_t msgNum;
|
||
int32_t i;
|
||
int32_t temp_index = RET_INVALID_PARA;
|
||
msgNum = sql_message_get_message_num();
|
||
for(i = 0; i < msgNum; i++) {
|
||
if(g_sql_message.msg_list[i].uuid == uuid) {
|
||
temp_index = i;
|
||
break;
|
||
}
|
||
}
|
||
return temp_index;
|
||
}
|
||
|
||
uint32_t sql_message_get_uuid(uint8_t index)
|
||
{
|
||
if(index < MESSAGE_LIST_MAX_NUM)
|
||
{
|
||
return g_sql_message.msg_list[index].uuid;
|
||
}
|
||
else
|
||
{
|
||
return RET_ERROR;
|
||
}
|
||
}
|
||
|
||
uint32_t sql_message_set_uuid(uint8_t index,uint8_t uuid)
|
||
{
|
||
if(index < MESSAGE_LIST_MAX_NUM)
|
||
{
|
||
g_sql_message.msg_list[index].uuid = uuid;
|
||
g_message_need_save = true;
|
||
}
|
||
else
|
||
{
|
||
return RET_ERROR;
|
||
}
|
||
return RET_SUCCESS;
|
||
}
|
||
|
||
bool sql_message_get_valid(uint8_t index)
|
||
{
|
||
if(index < MESSAGE_LIST_MAX_NUM)
|
||
{
|
||
return g_sql_message.msg_list[index].valid;
|
||
}
|
||
return false;
|
||
}
|
||
|
||
int8_t sql_message_set_valid(uint8_t index,bool valid)
|
||
{
|
||
if(index < MESSAGE_LIST_MAX_NUM && g_sql_message.msg_list[index].valid != valid)
|
||
{
|
||
g_message_need_save = true;
|
||
g_sql_message.msg_list[index].valid = valid;
|
||
}
|
||
else
|
||
{
|
||
return RET_ERROR;
|
||
}
|
||
return RET_SUCCESS;
|
||
}
|
||
|
||
bool sql_message_get_read_flag(uint8_t index)
|
||
{
|
||
if(index < MESSAGE_LIST_MAX_NUM)
|
||
{
|
||
return g_sql_message.msg_list[index].read_falg;
|
||
}
|
||
return false;
|
||
}
|
||
|
||
int8_t sql_message_set_read_flag(uint8_t index,bool flag)
|
||
{
|
||
if(index < MESSAGE_LIST_MAX_NUM && g_sql_message.msg_list[index].read_falg != flag)
|
||
{
|
||
g_message_need_save = true;
|
||
g_sql_message.msg_list[index].read_falg = flag;
|
||
}
|
||
else
|
||
{
|
||
return RET_ERROR;
|
||
}
|
||
return RET_SUCCESS;
|
||
}
|
||
|
||
uint32_t sql_message_get_timestamp(uint8_t index)
|
||
{
|
||
if(index < MESSAGE_LIST_MAX_NUM)
|
||
{
|
||
return g_sql_message.msg_list[index].timestamp;
|
||
}
|
||
else
|
||
{
|
||
return 0;
|
||
}
|
||
}
|
||
|
||
int8_t sql_message_set_timestamp(uint8_t index,uint32_t timestamp)
|
||
{
|
||
if(index < MESSAGE_LIST_MAX_NUM && g_sql_message.msg_list[index].timestamp != timestamp)
|
||
{
|
||
g_message_need_save = true;
|
||
g_sql_message.msg_list[index].timestamp = timestamp;
|
||
}
|
||
else
|
||
{
|
||
return RET_ERROR;
|
||
}
|
||
return RET_SUCCESS;
|
||
}
|
||
|
||
message_enum sql_message_get_type(uint8_t index)
|
||
{
|
||
if(index < MESSAGE_LIST_MAX_NUM)
|
||
{
|
||
return g_sql_message.msg_list[index].msg_type;
|
||
}
|
||
else
|
||
{
|
||
return MESSAGE_UNKNOWN;
|
||
}
|
||
}
|
||
|
||
int8_t sql_message_set_type(uint8_t index,uint8_t type)
|
||
{
|
||
if(index < MESSAGE_LIST_MAX_NUM && g_sql_message.msg_list[index].msg_type != type)
|
||
{
|
||
g_message_need_save = true;
|
||
g_sql_message.msg_list[index].msg_type = type;
|
||
}
|
||
else
|
||
{
|
||
return RET_ERROR;
|
||
}
|
||
return RET_SUCCESS;
|
||
}
|
||
|
||
int8_t sql_message_get_user_name(uint8_t index,char **text)
|
||
{
|
||
if(index < MESSAGE_LIST_MAX_NUM)
|
||
{
|
||
*text = g_sql_message.msg_list[index].user_name;
|
||
}
|
||
else
|
||
{
|
||
return RET_ERROR;
|
||
}
|
||
return RET_SUCCESS;
|
||
}
|
||
|
||
int8_t sql_message_set_user_name(uint8_t index,char *text)
|
||
{
|
||
uint32_t str_len = strlen(text);
|
||
str_len = (str_len > MESSAGE_TITLE_LENGTH)? MESSAGE_TITLE_LENGTH:str_len;
|
||
if((index < MESSAGE_LIST_MAX_NUM) && (str_len > 0))
|
||
{
|
||
g_message_need_save = true;
|
||
memcpy(g_sql_message.msg_list[index].user_name, text,str_len);
|
||
}
|
||
else
|
||
{
|
||
return RET_ERROR;
|
||
}
|
||
return RET_SUCCESS;
|
||
}
|
||
|
||
int8_t sql_message_get_user_number(uint8_t index,char **text)
|
||
{
|
||
if(index < MESSAGE_LIST_MAX_NUM)
|
||
{
|
||
*text = g_sql_message.msg_list[index].user_num;
|
||
}
|
||
else
|
||
{
|
||
return RET_ERROR;
|
||
}
|
||
return RET_SUCCESS;
|
||
}
|
||
|
||
int8_t sql_message_set_user_number(uint8_t index,char *text)
|
||
{
|
||
uint32_t str_len = strlen(text);
|
||
str_len = (str_len > MESSAGE_TITLE_LENGTH)? MESSAGE_TITLE_LENGTH:str_len;
|
||
if((index < MESSAGE_LIST_MAX_NUM) && (str_len > 0))
|
||
{
|
||
g_message_need_save = true;
|
||
memcpy(g_sql_message.msg_list[index].user_num, text,str_len);
|
||
}
|
||
else
|
||
{
|
||
return RET_ERROR;
|
||
}
|
||
return RET_SUCCESS;
|
||
}
|
||
|
||
int8_t sql_message_get_detail_info(uint8_t index,char **text)
|
||
{
|
||
if(index < MESSAGE_LIST_MAX_NUM)
|
||
{
|
||
*text = g_sql_message.msg_list[index].text;
|
||
}
|
||
else
|
||
{
|
||
return RET_ERROR;
|
||
}
|
||
return RET_SUCCESS;
|
||
}
|
||
|
||
int8_t sql_message_set_detail_info(uint8_t index,char *text)
|
||
{
|
||
static_print_debug("sql_message_get_detail_info(%d),text_len = %d",index,strlen(text));
|
||
printf("text:\r\n");
|
||
for (int i = 0; i < strlen(text); i++)
|
||
{
|
||
printf("--0x%02x",(uint8_t)text[i]);
|
||
}
|
||
printf("\r\n");
|
||
uint32_t str_len = strlen(text) + 1;
|
||
str_len = (str_len > MESSAGE_TEXT_LENGTH)? MESSAGE_TEXT_LENGTH:str_len;
|
||
if((index < MESSAGE_LIST_MAX_NUM) && (str_len > 0))
|
||
{
|
||
g_message_need_save = true;
|
||
memcpy(g_sql_message.msg_list[index].text, text,str_len - 1);
|
||
g_sql_message.msg_list[index].text[str_len - 1] = '\0';
|
||
}
|
||
else
|
||
{
|
||
printf("sql_message_set_detail_info error\r\n");
|
||
return RET_ERROR;
|
||
}
|
||
return RET_SUCCESS;
|
||
}
|
||
|
||
void sql_message_print_all(void)
|
||
{
|
||
printf("read all message:\n");
|
||
for (uint8_t i = 0; i < MESSAGE_LIST_MAX_NUM; i++)
|
||
{
|
||
if (g_sql_message.msg_list[i].valid)
|
||
{
|
||
printf("index:%d,timestamp:%d,msg_type:%d,user_name:%s,user_num:%s,text:%s\n",
|
||
i, g_sql_message.msg_list[i].timestamp, g_sql_message.msg_list[i].msg_type, g_sql_message.msg_list[i].user_name, g_sql_message.msg_list[i].user_num, g_sql_message.msg_list[i].text);
|
||
}
|
||
}
|
||
}
|
||
|
||
/**********************************************************************************************************************
|
||
* TEST FUNCTIONS
|
||
*/
|
||
void sql_message_test_init(uint8_t message_num)
|
||
{
|
||
uint8_t i=0;
|
||
uint8_t temp_index=0;
|
||
char text_str[32]= {0};
|
||
static_print_warn("sql_message_test_init(%d)", message_num);
|
||
for(i=0; i < message_num; i++){
|
||
temp_index = sql_message_new_message();
|
||
sql_message_set_valid(temp_index, true);
|
||
sql_message_set_timestamp(temp_index, rand()%100000);
|
||
memset(text_str,0,sizeof(text_str));
|
||
sprintf(text_str, "text_str:i=%d,t=%d", temp_index, sql_message_get_timestamp(temp_index));
|
||
sql_message_set_detail_info(temp_index, text_str);
|
||
sql_message_set_type(temp_index, rand()%(MESSAGE_TIKTOK+1));
|
||
}
|
||
|
||
uint8_t temp_list[MESSAGE_LIST_MAX_NUM]={0};
|
||
uint8_t count = sql_message_get_message_index_list(temp_list);
|
||
char *str_p = NULL;
|
||
for(i=0; i < count; i++){
|
||
sql_message_get_detail_info(temp_list[i], &str_p);
|
||
if(str_p){
|
||
static_print_warn("sql_message_test_%d index=%d time=%d info=%s", i, temp_list[i], sql_message_get_timestamp(temp_list[i]),str_p);
|
||
}else{
|
||
static_print_warn("sql_message_test_%d index=%d time=%d", i, temp_list[i], sql_message_get_timestamp(temp_list[i]));
|
||
}
|
||
}
|
||
}
|
||
void sql_message_test(void)
|
||
{
|
||
uint8_t index = sql_message_new_message();
|
||
sql_message_set_type(index, MESSAGE_WECHAT2);//4
|
||
char*text = "this is wechat message1 new ni hao ma wo hen hao dajia hao cai shi zhen de hao,hai si xin pian,信息列表";
|
||
sql_message_set_detail_info(index, text);
|
||
sql_message_set_timestamp(index, 1720664855);//2024-07-11 10:27:35
|
||
sql_message_set_valid(index, 1);
|
||
|
||
index = sql_message_new_message();
|
||
sql_message_set_type(index, MESSAGE_WECHAT2);//4
|
||
text = "this is wechat message2";
|
||
sql_message_set_detail_info(index, text);
|
||
sql_message_set_timestamp(index, 1720664890);//2024-07-11 10:28:10
|
||
sql_message_set_valid(index, 1);
|
||
|
||
index = sql_message_new_message();
|
||
sql_message_set_type(index, MESSAGE_WECHAT2);//4
|
||
text = "this is wechat message2";
|
||
sql_message_set_detail_info(index, text);
|
||
sql_message_set_timestamp(index, 1720664929);//2024-07-11 10:28:49
|
||
sql_message_set_valid(index, 1);
|
||
|
||
index = sql_message_new_message();
|
||
sql_message_set_type(index, MESSAGE_FACEBOOK);//5
|
||
text = "this is MESSAGE_FACEBOOK message1";
|
||
sql_message_set_detail_info(index, text);
|
||
sql_message_set_timestamp(index, 1720665044);//2024-07-11 10:30:44
|
||
sql_message_set_valid(index, 1);
|
||
|
||
index = sql_message_new_message();
|
||
sql_message_set_type(index, MESSAGE_TWITTER);//6
|
||
text = "this is MESSAGE_TWITTER message1";
|
||
sql_message_set_detail_info(index, text);
|
||
sql_message_set_timestamp(index, 1720665089);//2024-07-11 10:31:29
|
||
sql_message_set_valid(index, 1);
|
||
|
||
index = sql_message_new_message();
|
||
sql_message_set_type(index, MESSAGE_WHATSAPP);//8
|
||
text = "this is MESSAGE_WHATSAPP message1";
|
||
sql_message_set_detail_info(index, text);
|
||
sql_message_set_timestamp(index, 1720665073);//2024-07-11 10:31:13
|
||
sql_message_set_valid(index, 1);
|
||
}
|
||
|