hc
2023-11-22 f743a7adbd6e230d66a6206fa115b59fec2d88eb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#include <stdio.h>
#include <assert.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <stdbool.h>
#include <sys/types.h>
#include <unistd.h>
#include <ctype.h>
#include <inttypes.h>
 
#include <glib.h>
 
#include <pthread.h>
#include <gdbus.h>
 
#include "json-c/json.h"
#include "rkdb.h"
#include "common.h"
 
#define TABLE_STORAGE_DISK_PATH     "StorageDiskPath"
#define TABLE_STORAGE_MEDIA_FOLDER  "StorageMediaFolder"
#define TABLE_STORAGE_CONFIG        "StorageConfig"
#define TABLE_STORAGE_VERSION       "StorageVersion"
#define TABLE_STORAGE_PLAN_SNAP     "StoragePlanSnap"
#define TABLE_STORAGE_ADVANCE_PARA  "StorageAdvancePara"
 
#define TYPE_VIDEO         0
#define TYPE_PHOTO         1
#define TYPE_BLACK_LIST    2
#define TYPE_SNAPSHOT      3
#define TYPE_WHITE_LIST    4
 
#define STORAGE_VERSION             "1.0.3"
 
int storage_dbus_register(DBusConnection *dbus_conn)
{
    g_dbus_register_interface(dbus_conn, "/",
                              DB_STORAGE_INTERFACE,
                              methods,
                              signals, NULL, DB_STORAGE_INTERFACE, NULL);
 
    return 0;
}
 
void storage_init(void)
{
    char *col_para;
 
    if (equal_version(TABLE_STORAGE_VERSION, STORAGE_VERSION))
        return;
 
    g_free(rkdb_drop(TABLE_STORAGE_DISK_PATH));
    g_free(rkdb_drop(TABLE_STORAGE_MEDIA_FOLDER));
    g_free(rkdb_drop(TABLE_STORAGE_CONFIG));
    g_free(rkdb_drop(TABLE_STORAGE_PLAN_SNAP));
    g_free(rkdb_drop(TABLE_STORAGE_ADVANCE_PARA));
    g_free(rkdb_drop(TABLE_STORAGE_VERSION));
 
    creat_version_table(TABLE_STORAGE_VERSION, STORAGE_VERSION);
 
    col_para = "id INTEGER PRIMARY KEY AUTOINCREMENT," \
               "sPath TEXT NOT NULL UNIQUE," \
               "sName TEXT DEFAULT ''," \
               "iMount INT DEFAULT 0";
 
    g_free(rkdb_create(TABLE_STORAGE_DISK_PATH, col_para));
    g_free(rkdb_insert(TABLE_STORAGE_DISK_PATH, "sPath,sName,iMount", "'/mnt/sdcard','SD Card',0"));
    g_free(rkdb_insert(TABLE_STORAGE_DISK_PATH, "sPath,sName,iMount", "'/media/usb0','U Disk',0"));
    g_free(rkdb_insert(TABLE_STORAGE_DISK_PATH, "sPath,sName,iMount", "'/userdata/media','Emmc',0"));
 
    col_para = "id INTEGER PRIMARY KEY," \
               "sMediaFolder TEXT NOT NULL UNIQUE," \
               "sThumbFolder TEXT," \
               "sFormat TEXT," \
               "iCamId INT," \
               "iType INT," \
               "iDuty INT," \
               "iMaxNum INT";
 
    g_free(rkdb_create(TABLE_STORAGE_MEDIA_FOLDER, col_para));
    g_free(rkdb_insert(TABLE_STORAGE_MEDIA_FOLDER, "id,sMediaFolder,sThumbFolder,sFormat,iCamId,iType,iDuty,iMaxNum",
                                          "0,'video0','video0/.thumb','VIDEO_%Y%m%d%H%M%S',0,0,45,-1"));
    g_free(rkdb_insert(TABLE_STORAGE_MEDIA_FOLDER, "id,sMediaFolder,sThumbFolder,sFormat,iCamId,iType,iDuty,iMaxNum",
                                          "1,'photo0','photo0/.thumb','PHOTO_%Y%m%d%H%M%S',0,1,5,-1"));
    g_free(rkdb_insert(TABLE_STORAGE_MEDIA_FOLDER, "id,sMediaFolder,sThumbFolder,sFormat,iCamId,iType,iDuty,iMaxNum",
                                          "2,'video1','video1/.thumb','VIDEO_%Y%m%d%H%M%S',1,0,45,-1"));
    g_free(rkdb_insert(TABLE_STORAGE_MEDIA_FOLDER, "id,sMediaFolder,sThumbFolder,sFormat,iCamId,iType,iDuty,iMaxNum",
                                          "3,'photo1','photo1/.thumb','PHOTO_%Y%m%d%H%M%S',1,1,5,-1"));
 
    g_free(rkdb_insert(TABLE_STORAGE_MEDIA_FOLDER, "id,sMediaFolder,sThumbFolder,sFormat,iCamId,iType,iDuty,iMaxNum",
                                          "4,'black_list','','%Y%m%d%H%M%S',0,2,-1,-1"));
    g_free(rkdb_insert(TABLE_STORAGE_MEDIA_FOLDER, "id,sMediaFolder,sThumbFolder,sFormat,iCamId,iType,iDuty,iMaxNum",
                                          "5,'snapshot','','%Y%m%d%H%M%S',0,3,0,-1"));
    g_free(rkdb_insert(TABLE_STORAGE_MEDIA_FOLDER, "id,sMediaFolder,sThumbFolder,sFormat,iCamId,iType,iDuty,iMaxNum",
                                          "6,'white_list','','%Y%m%d%H%M%S',0,4,-1,-1"));
 
    col_para = "id INTEGER PRIMARY KEY," \
               "iFreeSize INT DEFAULT -1," \
               "iFreeSizeNotice INT," \
               "sMountPath TEXT NOT NULL UNIQUE";
    g_free(rkdb_create(TABLE_STORAGE_CONFIG, col_para));
    //The unit of iFreeSize is MB
    g_free(rkdb_insert(TABLE_STORAGE_CONFIG, "id,iFreeSize,iFreeSizeNotice,sMountPath","0,1024,512,'/userdata/media'"));
 
    col_para = "id INTEGER PRIMARY KEY," \
               "iEnabled INT DEFAULT 0," \
               "sImageType TEXT," \
               "sResolution TEXT," \
               "iImageQuality INT DEFAULT 10," \
               "iShotInterval INT DEFAULT 1000," \
               "iShotNumber INT DEFAULT 1";
    g_free(rkdb_create(TABLE_STORAGE_PLAN_SNAP, col_para));
    g_free(rkdb_insert(TABLE_STORAGE_PLAN_SNAP, "id,iEnabled,sImageType,sResolution,iImageQuality,iShotInterval,iShotNumber",
                                          "0,0,'JPEG','2688*1520',10,10000,1"));
    g_free(rkdb_insert(TABLE_STORAGE_PLAN_SNAP, "id,iEnabled,sImageType,sResolution,iImageQuality,iShotInterval,iShotNumber",
                                          "1,0,'JPEG','2688*1520',10,1000,4"));
 
    col_para = "id INTEGER PRIMARY KEY," \
               "iEnabled INT DEFAULT 0";
    g_free(rkdb_create(TABLE_STORAGE_ADVANCE_PARA, col_para));
    g_free(rkdb_insert(TABLE_STORAGE_ADVANCE_PARA, "id","0"));
}