summaryrefslogtreecommitdiff
path: root/tvapi/libtv/vpp/CPQdb.cpp (plain)
blob: 83d1bc1aae9dffeb1e711592fbc60f62ce3d91ca
1/*
2 * CPQdb.cpp
3 *
4 * Created on: 2011-12-13
5 * Author: casey
6 *
7 * change 2015.04
8 * showbo
9 */
10
11
12#include <stdio.h>
13#include <string.h>
14#include <stdlib.h>
15#include <sys/stat.h>
16#include <errno.h>
17#include "CPQdb.h"
18#include "../tvutils/tvutils.h"
19#include "../tvutils/tvutils.h"
20
21#if (PQ_NO_ANDROID == 0)
22#include <android/log.h>
23
24#define LOG_TAG "CPQdb"
25#include "CTvLog.h"
26#endif
27
28
29#if (PQ_NO_ANDROID == 1)
30using namespace std;
31#endif
32
33//#define CPQDB_DEBUG
34
35#define BRIGHTNESS_ID 0
36#define CONTRAST_ID 1
37#define SATURATION_ID 1
38#define HUE_ID 0
39#define SHARPNESS_ID 1
40
41//static char *str_buf[256];
42
43#define ID_FIELD "TableID"
44#define NR_LEVEL_NAME "NRLevel"
45#define CM_LEVEL_NAME "CMLevel"
46#define LEVEL_NAME "Level"
47#define ADC_SETTING "ADC_Settings"
48#define CVD2_SETTING "CVD2_Settings"
49#define PORT "Port"
50#define FORMAT "Format"
51
52
53#define CC_LINE_MAX_LEN (1024)
54
55#define LOG_TAG "CPQdb"
56//#define CPQDB_DEBUG
57
58
59/*int get_pq_from_file(const char *file_name, const char *screen_size, char *key_str_buf[]) {
60 FILE *fp = NULL;
61 int flag = -1;
62 char *str = NULL;
63 char r_line_buf[CC_LINE_MAX_LEN];
64
65 if (file_name == NULL || screen_size == NULL || key_str_buf == NULL) {
66 return -1;
67 }
68
69 fp = fopen(file_name, "r");
70 if (fp == NULL) {
71 LOGE("%s: open file \"%s\" error(%s).\n", "TV", file_name, strerror(errno));
72 return -1;
73 }
74
75 while (fgets(r_line_buf, CC_LINE_MAX_LEN, fp)) {
76 LOGD("%s, fgets_buf = %s\n","TV", r_line_buf);
77 if(NULL != strstr(r_line_buf, screen_size)){
78 LOGD("%s, screen_size_buf = %s\n","TV", r_line_buf);
79 str = (char*)malloc(strlen(r_line_buf));
80 memset(str, 0, strlen(str));
81 if(NULL != str){
82 strcpy(str, r_line_buf);
83 key_str_buf[0] = str;
84 LOGD("%s, key_str_buf[0] = %s\n","TV", key_str_buf[0]);
85 }
86 flag = 0;
87 break;
88 }
89 }
90
91 if(flag != 0)
92 key_str_buf[0] = NULL;
93
94 fclose(fp);
95 fp = NULL;
96
97 return flag;
98}*/
99
100/*int getFileSizeSystemCall(char * strFileName)
101{
102 struct stat temp;
103 stat(strFileName, &temp);
104 return temp.st_size;
105}*/
106
107CPqData::CPqData()
108{
109 int i = 0, j = 0;
110
111 for (i = 0; i < 15; i++) {
112 pq_bri_data[i].TotalNode = 0;
113 pq_bri_data[i].NodeValue = 0;
114 pq_bri_data[i].IndexValue = 0;
115 pq_bri_data[i].RegValue = 0;
116 pq_bri_data[i].step = 0;
117
118 pq_con_data[i].TotalNode = 0;
119 pq_con_data[i].NodeValue = 0;
120 pq_con_data[i].IndexValue = 0;
121 pq_con_data[i].RegValue = 0;
122 pq_con_data[i].step = 0;
123
124 pq_sat_data[i].TotalNode = 0;
125 pq_sat_data[i].NodeValue = 0;
126 pq_sat_data[i].IndexValue = 0;
127 pq_sat_data[i].RegValue = 0;
128 pq_sat_data[i].step = 0;
129
130 pq_hue_data[i].TotalNode = 0;
131 pq_hue_data[i].NodeValue = 0;
132 pq_hue_data[i].IndexValue = 0;
133 pq_hue_data[i].RegValue = 0;
134 pq_hue_data[i].step = 0;
135 }
136
137 for (i = 0; i < 10; i++) {
138 pq_sharpness_reg_data[i].length = 0;
139 for (j = 0; j < 50; j++) {
140 pq_sharpness_reg_data[i].reg_data[j].TotalNode = 0;
141 pq_sharpness_reg_data[i].reg_data[j].Value.type = 0;
142 pq_sharpness_reg_data[i].reg_data[j].Value.addr = 0;
143 pq_sharpness_reg_data[i].reg_data[j].Value.mask = 0;
144 pq_sharpness_reg_data[i].reg_data[j].Value.val = 0;
145 pq_sharpness_reg_data[i].reg_data[j].NodeValue = 0;
146 pq_sharpness_reg_data[i].reg_data[j].IndexValue = 0;
147 pq_sharpness_reg_data[i].reg_data[j].step = 0;
148 }
149 }
150}
151
152CPqData::~CPqData()
153{
154}
155
156int CPqData::openDB()
157{
158 int rval;
159 project_info_t tmp_info;
160 char *PARAM_PQ = "/param/pq.db";
161 char SYSTEM_PQ[128] = {0};
162 char tmp_buf[128] = {0};
163
164 strcpy(SYSTEM_PQ, "/system/etc/pq.db");
165
166 if (GetProjectInfo(&tmp_info) == 0) {
167 strcpy(tmp_buf, "/system/etc/");
168 strcat(tmp_buf, tmp_info.panel_type);
169 strcat(tmp_buf, ".db");
170 if (access(tmp_buf, 0) == 0) {
171 strncpy(SYSTEM_PQ, tmp_buf, sizeof(SYSTEM_PQ) - 1);
172 }
173 }
174
175 if (access(PARAM_PQ, 0) < 0) {
176 CFile file(SYSTEM_PQ);
177 if (file.copyTo(PARAM_PQ) != 0) {
178 LOGE("%s, copy file \"%s\" to \"%s\" error", __FUNCTION__, SYSTEM_PQ, PARAM_PQ);
179 return -1;
180 } else {
181 LOGD("%s, copy file \"%s\" to \"%s\" ok", __FUNCTION__, SYSTEM_PQ, PARAM_PQ);
182 }
183 }
184
185 closeDb();
186 rval = openDb(PARAM_PQ);
187
188 char *err;
189 bool isOk = integrityCheck();
190 if(!isOk) {
191 CFile file ( SYSTEM_PQ );
192 if ( file.copyTo ( PARAM_PQ ) != 0 ) {
193 LOGE ( "%s, copy file = %s , error", __FUNCTION__, SYSTEM_PQ );
194 return -1;
195 } else {
196 closeDb();
197 rval = openDb(PARAM_PQ);
198 LOGD ( "%s, copy file = %s , ok", __FUNCTION__, SYSTEM_PQ );
199 }
200 }
201 return rval;
202}
203
204int CPqData::getRegValues(tvin_port_t source, tvin_sig_fmt_t signal, is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, am_regs_t *regs)
205{
206 CSqlite::Cursor c_tablelist, c_reg_list;
207 int iOutRet = 0;
208 char sqlmaster[256];
209 int mode = is2dOr3d;//Check2Dor3D(status, trans_fmt);
210 //first get table name
211 sprintf(sqlmaster, "select TableName from GeneralCommonTable where "
212 "TVIN_PORT = %d and "
213 "TVIN_SIG_FMT = %d and "
214 "TVIN_TRANS_FMT = %d ;",
215 source, signal, mode);
216 this->select(sqlmaster, c_tablelist);
217 int index_am_reg = 0;
218 if(c_tablelist.moveToFirst()) { //for table list
219 int index_tablename = c_tablelist.getColumnIndex("TableName");
220 do {
221 sprintf(sqlmaster, "select RegType, RegAddr, RegMask, RegValue from %s;", c_tablelist.getString(index_tablename).string());
222 this->select(sqlmaster, c_reg_list);
223 if(c_reg_list.moveToFirst()) { //reg list for each table
224 int index_type = 0;//c_reg_list.getColumnIndex("RegType");
225 int index_addr = 1;//c_reg_list.getColumnIndex("RegAddr");
226 int index_mask = 2;//c_reg_list.getColumnIndex("RegMask");
227 int index_val = 3;//c_reg_list.getColumnIndex("RegValue");
228 do {
229 regs->am_reg[index_am_reg].type = c_reg_list.getInt(index_type);
230 regs->am_reg[index_am_reg].addr = c_reg_list.getInt(index_addr);
231 regs->am_reg[index_am_reg].mask = c_reg_list.getInt(index_mask);
232 regs->am_reg[index_am_reg].val = c_reg_list.getInt(index_val);
233 index_am_reg++;
234 } while(c_reg_list.moveToNext());
235 }
236 } while(c_tablelist.moveToNext());
237 }
238 //
239 regs->length = index_am_reg;
240 LOGD("getRegValues length = %d", regs->length);
241 return index_am_reg;
242}
243
244int CPqData::getRegValuesByValue(const char *name, const char *f_name, const char *f2_name, const int val,
245 const int val2, am_regs_t *regs)
246{
247 CSqlite::Cursor c_reg_list;
248 char sqlmaster[256];
249 int rval = -1;
250 //first get table name
251 if((strlen(f2_name) == 0) && (val2 == 0))
252 sprintf(sqlmaster, "select RegType, RegAddr, RegMask, RegValue from %s where %s = %d;", name, f_name, val);
253 else
254 sprintf(sqlmaster, "select RegType, RegAddr, RegMask, RegValue from %s where %s = %d and %s = %d;", name, f_name, val,
255 f2_name, val2);
256
257 rval = this->select(sqlmaster, c_reg_list);
258 int count = c_reg_list.getCount();
259 if(count > 512) {
260 LOGD("getRegValuesByValue regs is too more, in pq.db count = %d", count);
261 return -1;
262 }
263 int index_am_reg = 0;
264 if(c_reg_list.moveToFirst()) { //reg list for each table
265 int index_type = 0;//c_reg_list.getColumnIndex("RegType");
266 int index_addr = 1;//c_reg_list.getColumnIndex("RegAddr");
267 int index_mask = 2;//c_reg_list.getColumnIndex("RegMask");
268 int index_val = 3;//c_reg_list.getColumnIndex("RegValue");
269 do {
270 regs->am_reg[index_am_reg].type = c_reg_list.getInt(index_type);
271 regs->am_reg[index_am_reg].addr = c_reg_list.getInt(index_addr);
272 regs->am_reg[index_am_reg].mask = c_reg_list.getInt(index_mask);
273 regs->am_reg[index_am_reg].val = c_reg_list.getInt(index_val);
274 index_am_reg++;
275 } while(c_reg_list.moveToNext());
276 } else rval = -1;
277 //
278 regs->length = index_am_reg;
279 LOGD("getRegValuesByValue length = %d", regs->length);
280 return rval;
281}
282
283int CPqData::getRegValuesByValue_long(const char *name, const char *f_name, const char *f2_name, const int val, const int val2, am_regs_t *regs, am_regs_t *regs_1)
284{
285 CSqlite::Cursor c_reg_list;
286 char sqlmaster[256];
287 int rval = -1;
288 //first get table name
289 if((strlen(f2_name) == 0) && (val2 == 0))
290 sprintf(sqlmaster, "select RegType, RegAddr, RegMask, RegValue from %s where %s = %d;", name, f_name, val);
291 else
292 sprintf(sqlmaster, "select RegType, RegAddr, RegMask, RegValue from %s where %s = %d and %s = %d;", name, f_name, val,
293 f2_name, val2);
294
295 rval = this->select(sqlmaster, c_reg_list);
296
297 int index_am_reg = 0;
298 int count = c_reg_list.getCount();
299 if(count > 1024) {
300 LOGD("getRegValuesByValue_long regs is too more, in pq.db count = %d", count);
301 return -1;
302 }
303 if(c_reg_list.moveToFirst()) { //reg list for each table
304 int index_type = 0;//c_reg_list.getColumnIndex("RegType");
305 int index_addr = 1;//c_reg_list.getColumnIndex("RegAddr");
306 int index_mask = 2;//c_reg_list.getColumnIndex("RegMask");
307 int index_val = 3;//c_reg_list.getColumnIndex("RegValue");
308 do {
309 if(index_am_reg < 512) {
310 regs->am_reg[index_am_reg].type = c_reg_list.getInt(index_type);
311 regs->am_reg[index_am_reg].addr = c_reg_list.getInt(index_addr);
312 regs->am_reg[index_am_reg].mask = c_reg_list.getInt(index_mask);
313 regs->am_reg[index_am_reg].val = c_reg_list.getInt(index_val);
314 } else if(index_am_reg >= 512 && index_am_reg < 1024) {
315 regs_1->am_reg[index_am_reg - 512].type = c_reg_list.getInt(index_type);
316 regs_1->am_reg[index_am_reg - 512].addr = c_reg_list.getInt(index_addr);
317 regs_1->am_reg[index_am_reg - 512].mask = c_reg_list.getInt(index_mask);
318 regs_1->am_reg[index_am_reg - 512].val = c_reg_list.getInt(index_val);
319 } else {
320 }
321 index_am_reg++;
322 } while(c_reg_list.moveToNext());
323 } else rval = -1;
324 //
325 if(count < 512) {
326 regs->length = index_am_reg;
327 } else if(index_am_reg >= 512 && index_am_reg < 1024) {
328 regs->length = 512;
329 regs_1->length = index_am_reg - 512;
330 }
331 LOGD("getRegValuesByValue length = %d", index_am_reg);
332 return rval;
333}
334int CPqData::PQ_GetBaseColorParams(vpp_color_basemode_t basemode, tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, am_regs_t *regs)
335{
336 CSqlite::Cursor c;
337 char sqlmaster[256];
338 int mode = is2dOr3d;//Check2Dor3D(status, trans_fmt);
339 int rval = -1;
340 sprintf(sqlmaster, "select TableName from GeneralColormanagementTable where "
341 "TVIN_PORT = %d and "
342 "TVIN_SIG_FMT = %d and "
343 "TVIN_TRANS_FMT = %d ;",
344 source_port, sig_fmt, mode);
345
346 this->select(sqlmaster, c);
347
348 if(c.moveToFirst()) {
349 int index_TableName = 0;//c.getColumnIndex("TableName");
350 rval = getRegValuesByValue(c.getString(index_TableName), CM_LEVEL_NAME, "", (int)basemode, 0, regs);
351 }
352 return rval;
353}
354
355int CPqData::PQ_GetCM2Params(vpp_color_management2_t basemode, tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, am_regs_t *regs)
356{
357 CSqlite::Cursor c;
358 char sqlmaster[256];
359 int mode = is2dOr3d;//Check2Dor3D(status, trans_fmt);
360 int rval = -1;
361 if(source_port >= TVIN_PORT_CVBS0 && source_port <= TVIN_PORT_CVBS7) {
362 if(source_port != TVIN_PORT_CVBS3) {
363 source_port = TVIN_PORT_CVBS1;
364 }
365 } else if (source_port >= TVIN_PORT_HDMI0 && source_port <= TVIN_PORT_HDMI7) {
366 source_port = TVIN_PORT_HDMI0;
367 } else if(source_port > TVIN_PORT_DTV || source_port < TVIN_PORT_NULL) {
368 source_port = TVIN_PORT_MPEG0;
369 }
370
371 if(sig_fmt >= TVIN_SIG_FMT_MAX) {
372 sig_fmt = TVIN_SIG_FMT_NULL;
373 }
374
375 sprintf(sqlmaster, "select TableName from GeneralCM2Table where "
376 "TVIN_PORT = %d and "
377 "TVIN_SIG_FMT = %d and "
378 "TVIN_TRANS_FMT = %d ;",
379 source_port, sig_fmt, mode);
380
381 rval = this->select(sqlmaster, c);
382
383 if(c.moveToFirst()) {
384 int index_TableName = 0;//c.getColumnIndex("TableName");
385 rval = getRegValuesByValue(c.getString(index_TableName), CM_LEVEL_NAME, "", (int)basemode, 0, regs);
386 }
387 return rval;
388}
389
390int CPqData::PQ_GetNR2Params(vpp_noise_reduction2_mode_t nr_mode, tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, am_regs_t *regs)
391{
392 CSqlite::Cursor c;
393 char sqlmaster[256];
394 int mode = is2dOr3d;//Check2Dor3D(status, trans_fmt);
395 int rval = -1;
396
397 if(source_port >= TVIN_PORT_CVBS0 && source_port <= TVIN_PORT_CVBS7) {
398 if(source_port != TVIN_PORT_CVBS3) {
399 source_port = TVIN_PORT_CVBS1;
400 }
401 } else if (source_port >= TVIN_PORT_HDMI0 && source_port <= TVIN_PORT_HDMI7) {
402 source_port = TVIN_PORT_HDMI0;
403 } else if(source_port > TVIN_PORT_DTV || source_port < TVIN_PORT_NULL) {
404 source_port = TVIN_PORT_MPEG0;
405 }
406
407 sprintf(sqlmaster, "select TableName from GeneralNR2Table where "
408 "TVIN_PORT = %d and "
409 "TVIN_SIG_FMT = %d and "
410 "TVIN_TRANS_FMT = %d ;",
411 source_port, sig_fmt, mode);
412
413 rval = this->select(sqlmaster, c);
414
415 if(c.moveToFirst()) {
416 int index_TableName = 0;//c.getColumnIndex("TableName");
417 rval = getRegValuesByValue(c.getString(index_TableName), LEVEL_NAME, "", (int)nr_mode, 0, regs);
418 }
419 return rval;
420}
421
422int CPqData::PQ_GetXVYCCParams(vpp_xvycc_mode_t xvycc_mode, tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, am_regs_t *regs, am_regs_t *regs_1)
423{
424 CSqlite::Cursor c;
425 char sqlmaster[256];
426 int mode = is2dOr3d;//Check2Dor3D(status, trans_fmt);
427 int rval = -1;
428
429 if(source_port >= TVIN_PORT_CVBS0 && source_port <= TVIN_PORT_CVBS7) {
430 if(source_port != TVIN_PORT_CVBS3) {
431 source_port = TVIN_PORT_CVBS1;
432 }
433 } else if (source_port >= TVIN_PORT_HDMI0 && source_port <= TVIN_PORT_HDMI7) {
434 source_port = TVIN_PORT_HDMI0;
435 } else if(source_port > TVIN_PORT_DTV || source_port < TVIN_PORT_NULL) {
436 source_port = TVIN_PORT_MPEG0;
437 }
438
439 sprintf(sqlmaster, "select TableName from GeneralXVYCCTable where "
440 "TVIN_PORT = %d and "
441 "TVIN_SIG_FMT = %d and "
442 "TVIN_TRANS_FMT = %d ;",
443 source_port, sig_fmt, mode);
444
445 rval = this->select(sqlmaster, c);
446
447 if(c.moveToFirst()) {
448 int index_TableName = 0;//c.getColumnIndex("TableName");
449 rval = getRegValuesByValue_long(c.getString(index_TableName), LEVEL_NAME, "", (int)xvycc_mode, 0, regs, regs_1);
450 }
451 return rval;
452}
453
454int CPqData::PQ_GetMCDIParams(vpp_mcdi_mode_t mcdi_mode, tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, am_regs_t *regs)
455{
456 CSqlite::Cursor c;
457 char sqlmaster[256];
458 int mode = is2dOr3d;//Check2Dor3D(status, trans_fmt);
459 int rval = -1;
460
461 if(source_port >= TVIN_PORT_CVBS0 && source_port <= TVIN_PORT_CVBS7) {
462 if(source_port != TVIN_PORT_CVBS3) {
463 source_port = TVIN_PORT_CVBS1;
464 }
465 } else if (source_port >= TVIN_PORT_HDMI0 && source_port <= TVIN_PORT_HDMI7) {
466 source_port = TVIN_PORT_HDMI0;
467 } else if(source_port > TVIN_PORT_DTV || source_port < TVIN_PORT_NULL) {
468 source_port = TVIN_PORT_MPEG0;
469 }
470
471 sprintf(sqlmaster, "select TableName from GeneralMCDITable where "
472 "TVIN_PORT = %d and "
473 "TVIN_SIG_FMT = %d and "
474 "TVIN_TRANS_FMT = %d ;",
475 source_port, sig_fmt, mode);
476
477 rval = this->select(sqlmaster, c);
478
479 if(c.moveToFirst()) {
480 int index_TableName = 0;//c.getColumnIndex("TableName");
481 rval = getRegValuesByValue(c.getString(index_TableName), LEVEL_NAME, "", (int)mcdi_mode, 0, regs);
482 }
483 return rval;
484}
485
486int CPqData::PQ_GetColorTemperatureParams(vpp_color_temperature_mode_t Tempmode, tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, tvin_trans_fmt_t trans_fmt,
487 tcon_rgb_ogo_t *params)
488{
489 CSqlite::Cursor c;
490 char sqlmaster[256];
491
492 int rval = -1;
493
494 //default
495 params->en = 1;
496 params->r_pre_offset = 0;
497 params->g_pre_offset = 0;
498 params->b_pre_offset = 0;
499 params->r_gain = 1024;
500 params->g_gain = 1024;
501 params->b_gain = 1024;
502 params->r_post_offset = 0;
503 params->g_post_offset = 0;
504 params->b_post_offset = 0;
505
506 sprintf(sqlmaster, "select TableName from GeneralWhiteBalanceTable where "
507 "TVIN_PORT = %d and "
508 "TVIN_SIG_FMT = %d and "
509 "TVIN_TRANS_FMT = %d;",
510 source_port, sig_fmt, trans_fmt);
511
512 rval = this->select(sqlmaster, c);
513
514 if(c.moveToFirst()) {
515 int index_TableName = 0;//c.getColumnIndex("TableName");
516 sprintf(sqlmaster, "select Enable, R_Pre_Offset, G_Pre_Offset, B_Pre_Offset, R_Gain, G_Gain, B_Gain, R_Post_Offset, G_Post_Offset, B_Post_Offset from %s where "
517 "Level = %d and def = 0;", c.getString(index_TableName).string(), (int)Tempmode);
518
519 rval = this->select(sqlmaster, c);
520
521 if(c.moveToFirst()) {
522 params->en = c.getInt(0);//index 0
523 params->r_pre_offset = c.getInt(1);
524 params->g_pre_offset = c.getInt(2);
525 params->b_pre_offset = c.getInt(3);
526 params->r_gain = c.getInt(4);
527 params->g_gain = c.getInt(5);
528 params->b_gain = c.getInt(6);
529 params->r_post_offset = c.getInt(7);
530 params->g_post_offset = c.getInt(8);
531 params->b_post_offset = c.getInt(9);//index 9
532 }
533 }
534 return rval;
535}
536int CPqData::PQ_SetColorTemperatureParams(vpp_color_temperature_mode_t Tempmode, tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, tvin_trans_fmt_t trans_fmt,
537 tcon_rgb_ogo_t params)
538{
539 CSqlite::Cursor c;
540 char sqlmaster[256];
541 char sql[512];
542
543 int rval = -1;
544
545 sprintf(sqlmaster, "select TableName from GeneralWhiteBalanceTable where "
546 "TVIN_PORT = %d and "
547 "TVIN_SIG_FMT = %d and "
548 "TVIN_TRANS_FMT = %d;",
549 source_port, sig_fmt, trans_fmt);
550
551 rval = this->select(sqlmaster, c);
552
553 if(c.moveToFirst()) {
554 int index_TableName = 0;//c.getColumnIndex("TableName");
555 sprintf(sql, "update %s set Enable = %d, "
556 "R_Pre_Offset = %d, G_Pre_Offset = %d, B_Pre_Offset = %d, R_Gain = %d, G_Gain = %d, B_Gain = %d, "
557 "R_Post_Offset = %d, G_Post_Offset = %d, B_Post_Offset = %d where Level = %d and def = 0;", c.getString(index_TableName).string(),
558 params.en, params.r_pre_offset, params.g_pre_offset, params.b_pre_offset, params.r_gain, params.g_gain,
559 params.b_gain, params.r_post_offset, params.g_post_offset, params.b_post_offset, Tempmode);
560
561 rval = this->exeSql(sql);
562 }
563 return rval;
564}
565
566int CPqData::PQ_ResetAllColorTemperatureParams(void)
567{
568 CSqlite::Cursor c;
569 char sqlmaster[512];
570
571 int rval = -1;
572
573 sprintf(sqlmaster, "select distinct TableName from GeneralWhiteBalanceTable ;");
574
575 rval = this->select(sqlmaster, c);
576
577 if(c.moveToFirst()) {
578 int index_TableName = 0;//c.getColumnIndex("TableName");
579 do { //delete
580 sprintf(sqlmaster, "delete from %s where def = 0;"
581 "insert into %s( Level , Enable , R_Pre_Offset, G_Pre_Offset, B_Pre_Offset, R_Gain, G_Gain, B_Gain, R_Post_Offset, G_Post_Offset, B_Post_Offset, def ) "
582 "select Level, Enable, R_Pre_Offset, G_Pre_Offset, B_Pre_Offset, R_Gain, G_Gain, B_Gain, R_Post_Offset, G_Post_Offset, B_Post_Offset, 0 from %s where def = 1;",
583 c.getString(index_TableName).string(), c.getString(index_TableName).string(), c.getString(index_TableName).string());
584 rval = this->exeSql(sqlmaster);
585 } while(c.moveToNext());
586 }
587 return rval;
588}
589
590int CPqData::PQ_GetDNLPParams(tvin_port_t source_port, tvin_sig_fmt_t fmt, is_3d_type_t is2dOr3d,
591 tvin_trans_fmt_t trans_fmt, ve_dnlp_t *params, ve_dnlp_table_t *newParams, int *dnlpFlag)
592{
593 CSqlite::Cursor c;
594 char sqlmaster[256];
595 int mode = is2dOr3d;//Check2Dor3D(status, trans_fmt);
596 int rval = -1;
597 //default
598 params->en = 0;
599 params->rt = VE_DNLP_RT_0S;
600 params->rl = VE_DNLP_RL_01;
601 params->black = VE_DNLP_EXT_00;
602 params->white = VE_DNLP_EXT_00;
603
604 mode = is2dOr3d;//Check2Dor3D(status, trans_fmt);//(status << 16)|trans_fmt;
605
606 sprintf(sqlmaster, "select TableName from GeneralDNLPTable where "
607 "TVIN_PORT = %d and "
608 "TVIN_SIG_FMT = %d and "
609 "TVIN_TRANS_FMT = %d ;",
610 source_port, fmt, mode);
611
612 rval = this->select(sqlmaster, c);
613
614 if(c.moveToFirst()) {
615 int index_TableName = 0;//c.getColumnIndex("TableName");
616 sprintf(sqlmaster, "select value from %s ", c.getString(index_TableName).string());
617
618 rval = this->select(sqlmaster, c);
619 int count = c.getCount();
620 if (count == 1) {
621 int val;
622 c.moveToFirst();
623 val = c.getInt(0);//index 0
624 *dnlpFlag = 0;
625 params->en = (val & 0xf0000000) >> 28;
626 params->rt = (ve_dnlp_rt_e)((val & 0x0f000000) >> 24);
627 params->rl = (ve_dnlp_rl_e)((val & 0x00ff0000) >> 16);
628 params->black = (ve_dnlp_ext_e)((val & 0x0000ff00) >> 8);
629 params->white = (ve_dnlp_ext_e)((val & 0x000000ff) >> 0);
630 } else if (count > 1) {
631 c.moveToFirst();
632 c.moveToNext();
633 *dnlpFlag = 1;
634 newParams->en = c.getInt(0);
635 c.moveToNext();
636 newParams->method = c.getInt(0);
637 c.moveToNext();
638 newParams->cliprate = c.getInt(0);
639 c.moveToNext();
640 newParams->lowrange = c.getInt(0);
641 c.moveToNext();
642 newParams->hghrange = c.getInt(0);
643 c.moveToNext();
644 newParams->lowalpha = c.getInt(0);
645 c.moveToNext();
646 newParams->midalpha = c.getInt(0);
647 c.moveToNext();
648 newParams->hghalpha = c.getInt(0);
649 }
650 }
651 return rval;
652}
653
654int CPqData::PQ_SetNoLineAllBrightnessParams(tv_source_input_type_t source_type, int osd0, int osd25, int osd50, int osd75, int osd100)
655{
656 return SetNonlinearMapping(TVPQ_DATA_BRIGHTNESS, source_type, osd0, osd25, osd50, osd75, osd100);
657}
658int CPqData::PQ_GetNoLineAllBrightnessParams(tv_source_input_type_t source_type, int *osd0, int *osd25, int *osd50, int *osd75, int *osd100)
659{
660 int osdvalue[5] = {0};
661 int rval;
662 rval = GetNonlinearMappingByOSDFac(TVPQ_DATA_BRIGHTNESS, source_type, osdvalue);
663 *osd0 = osdvalue[0];
664 *osd25 = osdvalue[1];
665 *osd50 = osdvalue[2];
666 *osd75 = osdvalue[3];
667 *osd100 = osdvalue[4];
668 if(rval) {
669 LOGE("PQ_GetNoLineAllBrightnessParams Error %d\n", rval);
670 }
671 return rval;
672
673}
674
675int CPqData::PQ_GetBrightnessParams(tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, int level, int *params)
676{
677 int val;
678
679 GetNonlinearMapping(TVPQ_DATA_BRIGHTNESS, source_port, level, &val);
680 *params = CaculateLevelParam(pq_bri_data, bri_nodes, val);
681 return 0;
682
683}
684int CPqData::PQ_SetBrightnessParams(tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, int level, int params)
685{
686 return 0;
687}
688
689int CPqData::PQ_SetNoLineAllContrastParams(tv_source_input_type_t source_type, int osd0, int osd25, int osd50, int osd75, int osd100)
690{
691 return SetNonlinearMapping(TVPQ_DATA_CONTRAST, source_type, osd0, osd25, osd50, osd75, osd100);
692}
693int CPqData::PQ_GetNoLineAllContrastParams(tv_source_input_type_t source_type, int *osd0, int *osd25, int *osd50, int *osd75, int *osd100)
694{
695 int osdvalue[5] = {0};
696 int rval;
697 rval = GetNonlinearMappingByOSDFac(TVPQ_DATA_CONTRAST, source_type, osdvalue);
698 *osd0 = osdvalue[0];
699 *osd25 = osdvalue[1];
700 *osd50 = osdvalue[2];
701 *osd75 = osdvalue[3];
702 *osd100 = osdvalue[4];
703 if(rval) {
704 LOGE("PQ_GetNoLineAllContrastParams Error %d\n", rval);
705 }
706 return rval;
707}
708
709int CPqData::PQ_GetContrastParams(tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, int level, int *params)
710{
711 int val;
712 GetNonlinearMapping(TVPQ_DATA_CONTRAST, source_port, level, &val);
713 *params = CaculateLevelParam(pq_con_data, con_nodes, val);
714 return 0;
715}
716int CPqData::PQ_SetContrastParams(tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, int level, int params)
717{
718 return 0;
719}
720
721int CPqData::PQ_SetNoLineAllSaturationParams(tv_source_input_type_t source_type, int osd0, int osd25, int osd50, int osd75, int osd100)
722{
723 return SetNonlinearMapping(TVPQ_DATA_SATURATION, source_type, osd0, osd25, osd50, osd75, osd100);
724}
725int CPqData::PQ_GetNoLineAllSaturationParams(tv_source_input_type_t source_type, int *osd0, int *osd25, int *osd50, int *osd75, int *osd100)
726{
727 int osdvalue[5] = {0};
728 int rval;
729 rval = GetNonlinearMappingByOSDFac(TVPQ_DATA_SATURATION, source_type, osdvalue);
730 *osd0 = osdvalue[0];
731 *osd25 = osdvalue[1];
732 *osd50 = osdvalue[2];
733 *osd75 = osdvalue[3];
734 *osd100 = osdvalue[4];
735 if(rval) {
736 LOGE("PQ_GetNoLineAllSaturationParams Error %d\n", rval);
737 }
738 return rval;
739}
740
741int CPqData::PQ_GetSaturationParams(tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, int level, int *params)
742{
743 int val;
744 GetNonlinearMapping(TVPQ_DATA_SATURATION, source_port, level, &val);
745 *params = CaculateLevelParam(pq_sat_data, sat_nodes, val);
746 return 0;
747}
748int CPqData::PQ_SetSaturationParams(tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, int level, int params)
749{
750 return 0;
751}
752
753int CPqData::PQ_SetNoLineAllHueParams(tv_source_input_type_t source_type, int osd0, int osd25, int osd50, int osd75, int osd100)
754{
755 return SetNonlinearMapping(TVPQ_DATA_HUE, source_type, osd0, osd25, osd50, osd75, osd100);
756}
757int CPqData::PQ_GetNoLineAllHueParams(tv_source_input_type_t source_type, int *osd0, int *osd25, int *osd50, int *osd75, int *osd100)
758{
759 int osdvalue[5] = {0};
760 int rval;
761 rval = GetNonlinearMappingByOSDFac(TVPQ_DATA_HUE, source_type, osdvalue);
762 *osd0 = osdvalue[0];
763 *osd25 = osdvalue[1];
764 *osd50 = osdvalue[2];
765 *osd75 = osdvalue[3];
766 *osd100 = osdvalue[4];
767 if(rval) {
768 LOGE("PQ_GetNoLineAllHueParams Error %d\n", rval);
769 }
770 return rval;
771}
772
773int CPqData::PQ_GetHueParams(tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, int level, int *params)
774{
775 int val;
776 GetNonlinearMapping(TVPQ_DATA_HUE, source_port, level, &val);
777 *params = CaculateLevelParam(pq_hue_data, hue_nodes, val);
778 return 0;
779}
780int CPqData::PQ_SetHueParams(tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, int level, int params)
781{
782 return 0;
783}
784
785int CPqData::PQ_SetNoLineAllSharpnessParams(tv_source_input_type_t source_type, int osd0, int osd25, int osd50, int osd75, int osd100)
786{
787 return SetNonlinearMapping(TVPQ_DATA_SHARPNESS, source_type, osd0, osd25, osd50, osd75, osd100);
788}
789int CPqData::PQ_GetNoLineAllSharpnessParams(tv_source_input_type_t source_type, int *osd0, int *osd25, int *osd50, int *osd75, int *osd100)
790{
791 int osdvalue[5] = {0};
792 int rval;
793 rval = GetNonlinearMappingByOSDFac(TVPQ_DATA_SHARPNESS, source_type, osdvalue);
794 *osd0 = osdvalue[0];
795 *osd25 = osdvalue[1];
796 *osd50 = osdvalue[2];
797 *osd75 = osdvalue[3];
798 *osd100 = osdvalue[4];
799 if(rval) {
800 LOGE("PQ_GetNoLineAllSharpnessParams Error %d\n", rval);
801 }
802 return rval;
803}
804
805int CPqData::PQ_GetSharpnessParams(tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, int level, am_regs_t *regs)
806{
807 int val;
808 GetNonlinearMapping(TVPQ_DATA_SHARPNESS, source_port, level, &val);
809 LOGD("val = %d\n", val);
810 *regs = CaculateLevelRegsParam(pq_sharpness_reg_data, val);
811 return 0;
812}
813int CPqData::PQ_GetPLLParams(tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, am_regs_t *regs)
814{
815 int ret = -1;
816 int i = 0;
817
818 ret = getRegValuesByValue(ADC_SETTING, PORT, FORMAT, source_port, sig_fmt, regs);
819#ifdef CPQDB_DEBUG
820 if(ret == 0) {
821 for(i = 0; i < regs->length; i++) {
822 LOGD("%s, =================================================", "TV");
823 LOGD("%s, regData.am_reg[%d].type = %d", "TV", i, regs->am_reg[i].type);
824 LOGD("%s, regData.am_reg[%d].addr = %d", "TV", i, regs->am_reg[i].addr);
825 LOGD("%s, regData.am_reg[%d].mask = %d", "TV", i, regs->am_reg[i].mask);
826 LOGD("%s, regData.am_reg[%d].val = %d", "TV", i, regs->am_reg[i].val);
827 }
828 }
829#endif
830 if(regs->am_reg[0].val == 0 && regs->am_reg[1].val == 0 && regs->am_reg[2].val == 0 && regs->am_reg[3].val == 0) {
831 LOGE("%s,db's value is all zeros, that's not OK!!!\n", "TV");
832 return -1;
833 }
834 return ret;
835}
836int CPqData::PQ_GetCVD2Params(tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, am_regs_t *regs)
837{
838 int ret = -1;
839 int i = 0;
840 ret = getRegValuesByValue(CVD2_SETTING, PORT, FORMAT, source_port, sig_fmt, regs);
841#ifdef CPQDB_DEBUG
842 if(ret == 0) {
843 for(i = 0; i < regs->length; i++) {
844 LOGD("%s, =================================================", "TV");
845 LOGD("%s, regData.am_reg[%d].type = %d", "TV", i, regs->am_reg[i].type);
846 LOGD("%s, regData.am_reg[%d].addr = %d", "TV", i, regs->am_reg[i].addr);
847 LOGD("%s, regData.am_reg[%d].mask = %d", "TV", i, regs->am_reg[i].mask);
848 LOGD("%s, regData.am_reg[%d].val = %d", "TV", i, regs->am_reg[i].val);
849 }
850 }
851#endif
852 if(regs->am_reg[0].val == 0 && regs->am_reg[1].val == 0 && regs->am_reg[2].val == 0 && regs->am_reg[3].val == 0) {
853 LOGE("%s,db's value is all zeros, that's not OK!!!\n", "TV");
854 return -1;
855 }
856
857 return ret;
858}
859int CPqData::PQ_SetSharpnessParams(tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, int level, am_regs_t regs)
860{
861 return 0;
862}
863
864int CPqData::PQ_SetNoLineAllVolumeParams(tv_source_input_type_t source_type, int osd0, int osd25, int osd50, int osd75, int osd100)
865{
866 return SetNonlinearMapping(TVPQ_DATA_VOLUME, source_type, osd0, osd25, osd50, osd75, osd100);
867}
868int CPqData::PQ_GetNoLineAllVolumeParams(tv_source_input_type_t source_type, int *osd0, int *osd25, int *osd50, int *osd75, int *osd100)
869{
870 int osdvalue[5] = {0};
871 int rval;
872 rval = GetNonlinearMappingByOSDFac(TVPQ_DATA_VOLUME, source_type, osdvalue);
873 *osd0 = osdvalue[0];
874 *osd25 = osdvalue[1];
875 *osd50 = osdvalue[2];
876 *osd75 = osdvalue[3];
877 *osd100 = osdvalue[4];
878 if(rval) {
879 LOGE("PQ_GetNoLineAllSharpnessParams Error %d\n", rval);
880 }
881 return rval;
882}
883
884int CPqData::PQ_SetVolumeParams(tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, int level, int params)
885{
886 return 0;
887}
888
889
890int CPqData::PQ_ResetAllNoLineParams(void)
891{
892 int rval;
893 char sqlmaster[256];
894 char *err = NULL;
895
896 sprintf(sqlmaster, "delete from NonlinearMapping; "
897 "insert into NonlinearMapping(TVIN_PORT, Item_ID, Level, Value) select TVIN_PORT, Item_ID, Level, Value from NonlinearMapping_Default;");
898
899 rval = this->exeSql(sqlmaster);
900 return rval;
901}
902
903
904int CPqData::PQ_GetNoiseReductionParams(vpp_noise_reduction_mode_t nr_mode, tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, int *params)
905{
906 CSqlite::Cursor c;
907 char sqlmaster[256];
908 int mode = is2dOr3d;//Check2Dor3D(status, trans_fmt);
909 int rval = -1;
910
911 sprintf(sqlmaster, "select TableName from GeneralNoiseReductionTable where "
912 "TVIN_PORT = %d and "
913 "TVIN_SIG_FMT = %d and "
914 "TVIN_TRANS_FMT = %d ;",
915 source_port, sig_fmt, mode);
916
917 rval = this->select(sqlmaster, c);
918
919 if(c.moveToFirst()) {
920 int index_TableName = 0;//c.getColumnIndex("TableName");
921 sprintf(sqlmaster, "select NRValue from %s where NRLevel = %d;" , c.getString(index_TableName).string(), (int)nr_mode);
922
923 rval = this->select(sqlmaster, c);
924
925 if(c.moveToFirst()) {
926 *params = c.getInt(0);
927 }
928 }
929 return rval;
930}
931
932int CPqData::PQ_SetNoiseReductionParams(vpp_noise_reduction_mode_t nr_mode, tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, int *params)
933{
934 return 0;
935}
936
937int CPqData::PQ_GetOverscanParams(tv_source_input_type_t source_type, tvin_sig_fmt_t fmt, is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, vpp_display_mode_t dmode, tvin_cutwin_t *cutwin_t)
938{
939 CSqlite::Cursor c;
940 char sqlmaster[256];
941 int mode = is2dOr3d;//Check2Dor3D(status, trans_fmt);
942 int rval = -1;
943
944 cutwin_t->hs = 0;
945 cutwin_t->he = 0;
946 cutwin_t->vs = 0;
947 cutwin_t->ve = 0;
948
949 sprintf(sqlmaster, "select Hs, He, Vs, Ve from OVERSCAN where "
950 "TVIN_PORT = %d and "
951 "TVIN_SIG_FMT = %d and "
952 "TVIN_TRANS_FMT = %d ;",
953 source_type, fmt, mode);
954
955 rval = this->select(sqlmaster, c);
956
957 if(c.moveToFirst()) {
958 cutwin_t->hs = c.getInt(0);
959 cutwin_t->he = c.getInt(1);
960 cutwin_t->vs = c.getInt(2);
961 cutwin_t->ve = c.getInt(3);
962 }
963 return rval;
964}
965int CPqData::PQ_SetOverscanParams(tv_source_input_type_t source_type, tvin_sig_fmt_t fmt, is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, tvin_cutwin_t cutwin_t)
966{
967 CSqlite::Cursor c;
968 char sqlmaster[256];
969 int mode = is2dOr3d;//Check2Dor3D(status, trans_fmt);
970 int rval = -1;
971
972 sprintf(sqlmaster, "select * from OVERSCAN where TVIN_PORT = %d and TVIN_SIG_FMT = %d and TVIN_TRANS_FMT = %d;", source_type, fmt, mode);
973
974 rval = this->select(sqlmaster, c);
975
976 if(c.moveToFirst()) {
977 sprintf(sqlmaster, "update OVERSCAN set Hs = %d, He = %d, Vs = %d, Ve = %d where TVIN_PORT = %d and TVIN_SIG_FMT = %d and TVIN_TRANS_FMT = %d;",
978 cutwin_t.hs, cutwin_t.he, cutwin_t.vs, cutwin_t.ve, source_type, fmt, mode);
979 } else {
980 sprintf(sqlmaster, "Insert into OVERSCAN(TVIN_PORT, TVIN_SIG_FMT, TVIN_TRANS_FMT, Hs, He, Vs, Ve) values(%d, %d, %d ,%d ,%d, %d, %d);",
981 source_type, fmt, mode, cutwin_t.hs, cutwin_t.he, cutwin_t.vs, cutwin_t.ve);
982 }
983 rval = this->exeSql(sqlmaster);
984
985 return rval;
986}
987
988int CPqData::PQ_ResetAllOverscanParams(void)
989{
990 int rval;
991 char sqlmaster[256];
992
993 sprintf(sqlmaster, "delete from OVERSCAN; insert into OVERSCAN(TVIN_PORT, TVIN_SIG_FMT, TVIN_TRANS_FMT, hs, he, vs, ve) select TVIN_PORT, TVIN_SIG_FMT, TVIN_TRANS_FMT, hs, he, vs, ve from OVERSCAN_default;");
994 rval = this->exeSql(sqlmaster);
995
996 return rval;
997}
998
999int CPqData::PQ_GetPQModeParams(tv_source_input_type_t source_type, vpp_picture_mode_t pq_mode, vpp_pq_para_t *params)
1000{
1001 CSqlite::Cursor c;
1002 char sqlmaster[256];
1003
1004 int rval = -1;
1005
1006 sprintf(sqlmaster, "select Brightness, Contrast, Saturation, Hue, Sharpness, Backlight, NR from Picture_Mode where "
1007 "TVIN_PORT = %d and "
1008 "Mode = %d ;",
1009 source_type, pq_mode);
1010
1011 rval = this->select(sqlmaster, c);
1012
1013 if(c.moveToFirst()) {
1014 params->brightness = c.getInt(0);
1015 params->contrast = c.getInt(1);
1016 params->saturation = c.getInt(2);
1017 params->hue = c.getInt(3);
1018 params->sharpness = c.getInt(4);
1019 params->backlight = c.getInt(5);
1020 params->nr = c.getInt(6);
1021 }
1022 return rval;
1023}
1024int CPqData::PQ_SetPQModeParams(tv_source_input_type_t source_type, vpp_picture_mode_t pq_mode, vpp_pq_para_t *params)
1025{
1026 int rval;
1027 char sql[256];
1028
1029 sprintf(sql, "update Picture_Mode set Brightness = %d, Contrast = %d, Saturation = %d, Hue = %d, Sharpness = %d, Backlight = %d, NR= %d "
1030 " where TVIN_PORT = %d and Mode = %d;",
1031 params->brightness, params->contrast, params->saturation,
1032 params->hue, params->sharpness, params->backlight, params->nr,
1033 source_type, pq_mode);
1034 rval = this->exeSql(sql);
1035 return 0;
1036}
1037
1038int CPqData::PQ_SetPQModeParamsByName(const char *name, tv_source_input_type_t source_type, vpp_picture_mode_t pq_mode, vpp_pq_para_t *params)
1039{
1040 int rval;
1041 char sql[256];
1042
1043 sprintf(sql, "insert into %s(TVIN_PORT, Mode, Brightness, Contrast, Saturation, Hue, Sharpness, Backlight, NR)"
1044 " values(%d,%d,%d,%d,%d,%d,%d,%d,%d);", name, source_type, pq_mode, params->brightness, params->contrast, params->saturation,
1045 params->hue, params->sharpness, params->backlight, params->nr);
1046
1047 rval = this->exeSql(sql);
1048 return 0;
1049}
1050
1051int CPqData::PQ_ResetAllPQModeParams(void)
1052{
1053 int rval;
1054 char sqlmaster[256];
1055
1056 sprintf(sqlmaster, "delete from picture_mode; insert into picture_mode(TVIN_PORT, Mode, Brightness, Contrast, Saturation, Hue, Sharpness, Backlight, NR) select TVIN_PORT, Mode, Brightness, Contrast, Saturation, Hue, Sharpness, Backlight, NR from picture_mode_default;");
1057
1058 rval = this->exeSql(sqlmaster);
1059 return rval;
1060}
1061
1062int CPqData::PQ_GetGammaSpecialTable(int gammaValue, const char *f_name, tcon_gamma_table_t *gamma_value)
1063{
1064 CSqlite::Cursor c;
1065 char sqlmaster[256];
1066 int rval = -1;
1067
1068 sprintf(sqlmaster, "select %s from GAMMA_%d", f_name, gammaValue);
1069
1070 rval = this->select(sqlmaster, c);
1071
1072 if(c.moveToFirst()) {
1073 int index = 0;
1074 do {
1075 gamma_value->data[index] = c.getInt(0);
1076 index++;
1077 } while(c.moveToNext());
1078 }
1079 return rval;
1080}
1081
1082int CPqData::PQ_GetGammaTableR(int panel_id, tvin_port_t source_port, tvin_sig_fmt_t fmt, tcon_gamma_table_t *gamma_r)
1083{
1084 return PQ_GetGammaTable(panel_id, source_port, fmt, "Red", gamma_r);
1085}
1086
1087int CPqData::PQ_GetGammaTableG(int panel_id, tvin_port_t source_port, tvin_sig_fmt_t fmt, tcon_gamma_table_t *gamma_g)
1088{
1089 return PQ_GetGammaTable(panel_id, source_port, fmt, "Green", gamma_g);
1090}
1091
1092int CPqData::PQ_GetGammaTableB(int panel_id, tvin_port_t source_port, tvin_sig_fmt_t fmt, tcon_gamma_table_t *gamma_b)
1093{
1094 return PQ_GetGammaTable(panel_id, source_port, fmt, "Blue", gamma_b);
1095}
1096
1097int CPqData::PQ_GetGammaTable(int panel_id, tvin_port_t source_port, tvin_sig_fmt_t fmt, const char *f_name, tcon_gamma_table_t *val)
1098{
1099 CSqlite::Cursor c;
1100 char sqlmaster[256];
1101
1102 int rval = -1;
1103
1104 sprintf(sqlmaster, "select TableName from GeneralGammaTable where "
1105 "TVIN_PORT = %d and "
1106 "TVIN_SIG_FMT = %d;",
1107 source_port, fmt);
1108
1109 rval = this->select(sqlmaster, c);
1110
1111 if(c.moveToFirst()) {
1112 int index_TableName = 0;//c.getColumnIndex("TableName");
1113 sprintf(sqlmaster, "select %s from %s;", f_name, c.getString(index_TableName).string());
1114
1115 rval = this->select(sqlmaster, c);
1116 if(c.moveToFirst()) {
1117 int index = 0;
1118 do {
1119 val->data[index] = c.getInt(0);
1120 index++;
1121 } while(c.moveToNext());
1122 }
1123 }
1124 return rval;
1125}
1126
1127
1128int CPqData::PQ_GetVGAAjustPara(tvin_sig_fmt_t vga_fmt, tvafe_vga_parm_t *adjparam)
1129{
1130 CSqlite::Cursor c;
1131 char sqlmaster[256];
1132 int rval = -1;
1133
1134 adjparam->clk_step = 0;
1135 adjparam->phase = 0;
1136 adjparam->hpos_step = 0;
1137 adjparam->vpos_step = 0;
1138 adjparam->vga_in_clean = 0;
1139
1140 sprintf(sqlmaster, "select Clk, Phase, HPos, VPos, Vga_in_clean from VGA_AutoParams where TVIN_SIG_FMT = %d", vga_fmt);
1141
1142 rval = this->select(sqlmaster, c);
1143
1144 if(c.moveToFirst()) {
1145 adjparam->clk_step = c.getInt(0);
1146 adjparam->phase = c.getInt(1);
1147 adjparam->hpos_step = c.getInt(2);
1148 adjparam->vpos_step = c.getInt(3);
1149 adjparam->vga_in_clean = c.getInt(4);
1150 }
1151 return rval;
1152}
1153int CPqData::PQ_SetVGAAjustPara(tvin_sig_fmt_t vga_fmt, tvafe_vga_parm_t adjparam)
1154{
1155 CSqlite::Cursor c;
1156 char sql[256];
1157 int rval = -1;
1158
1159 sprintf(sql, "select * from VGA_AutoParams where TVIN_SIG_FMT = %d;", vga_fmt);
1160
1161 rval = this->select(sql, c);
1162
1163 if(c.moveToFirst()) {
1164 sprintf(sql, "Insert into VGA_AutoParams(TVIN_SIG_FMT, Clk, Phase, HPos, VPos, Vga_in_clean) values(%d, %d, %d ,%d ,%d, %d);",
1165 vga_fmt, adjparam.clk_step, adjparam.phase, adjparam.hpos_step, adjparam.vpos_step, adjparam.vga_in_clean);
1166 } else {
1167 sprintf(sql, "update VGA_AutoParams set Clk = %d, Phase = %d, HPos = %d, VPos = %d, Vga_in_clean = %d where TVIN_SIG_FMT = %d;",
1168 adjparam.clk_step, adjparam.phase, adjparam.hpos_step, adjparam.vpos_step, adjparam.vga_in_clean, vga_fmt);
1169 }
1170 rval = this->exeSql(sql);
1171 return rval;
1172}
1173
1174int CPqData::CaculateLevelParam(tvpq_data_t *pq_data, int nodes, int level)
1175{
1176 int i;
1177
1178 for(i = 0; i < nodes; i++) {
1179 if(level < pq_data[i].IndexValue) {
1180 break;
1181 }
1182 }
1183
1184 if(i == 0) {
1185 return pq_data[i].RegValue;
1186 } else if(i == nodes) {
1187 return pq_data[i - 1].RegValue;
1188 } else {
1189 return pq_data[i - 1].RegValue + (level - pq_data[i - 1].IndexValue) * pq_data[i - 1].step;
1190 }
1191}
1192
1193am_regs_t CPqData::CaculateLevelRegsParam(tvpq_sharpness_regs_t *pq_regs, int level)
1194{
1195 am_regs_t regs;
1196 int i;
1197
1198 for(i = 0; i < sha_nodes; i++) {
1199 if(level < pq_regs[i].reg_data[0].IndexValue) {
1200 break;
1201 }
1202 }
1203
1204 if(i == 0) {
1205 regs.length = pq_regs[i].length;
1206 for(int j = 0; j < pq_regs[i].length; j++) {
1207 regs.am_reg[j].type = pq_regs[i].reg_data[j].Value.type;
1208 regs.am_reg[j].addr = pq_regs[i].reg_data[j].Value.addr;
1209 regs.am_reg[j].mask = pq_regs[i].reg_data[j].Value.mask;
1210 regs.am_reg[j].val = pq_regs[i].reg_data[j].Value.val;
1211 }
1212
1213 } else if(i == sha_nodes) {
1214 regs.length = pq_regs[i - 1].length;
1215 for(int j = 0; j < pq_regs[i - 1].length; j++) {
1216 regs.am_reg[j].type = pq_regs[i - 1].reg_data[j].Value.type;
1217 regs.am_reg[j].addr = pq_regs[i - 1].reg_data[j].Value.addr;
1218 regs.am_reg[j].mask = pq_regs[i - 1].reg_data[j].Value.mask;
1219 regs.am_reg[j].val = pq_regs[i - 1].reg_data[j].Value.val;
1220 }
1221 } else {
1222 regs.length = pq_regs[i - 1].length;
1223 for(int j = 0; j < pq_regs[i - 1].length; j++) {
1224 regs.am_reg[j].type = pq_regs[i - 1].reg_data[j].Value.type;
1225 regs.am_reg[j].addr = pq_regs[i - 1].reg_data[j].Value.addr;
1226 regs.am_reg[j].mask = pq_regs[i - 1].reg_data[j].Value.mask;
1227 regs.am_reg[j].val = pq_regs[i - 1].reg_data[j].Value.val + (level - pq_regs[i - 1].reg_data[j].IndexValue) * pq_regs[i - 1].reg_data[j].step;
1228 }
1229 }
1230
1231 return regs;
1232}
1233
1234
1235int CPqData::GetNonlinearMapping(tvpq_data_type_t data_type, tvin_port_t source_port, int level, int *params)
1236{
1237 CSqlite::Cursor c;
1238 char sqlmaster[256];
1239 int rval = -1;
1240
1241 tv_source_input_type_t type;
1242 //showboz
1243 type = CTvin::Tvin_SourcePortToSourceInputType(source_port);//???
1244
1245 sprintf(sqlmaster, "select Value from NonlinearMapping where "
1246 "TVIN_PORT = %d and "
1247 "Item_ID = %d and "
1248 "Level = %d ;",
1249 type, data_type, level);
1250
1251 rval = this->select(sqlmaster, c);
1252
1253 if(c.moveToFirst()) {
1254 *params = c.getInt(0);
1255 }
1256 return rval;
1257}
1258
1259int CPqData::GetNonlinearMappingByOSDFac(tvpq_data_type_t data_type, tv_source_input_type_t source_type, int *params)
1260{
1261 CSqlite::Cursor c;
1262 char sqlmaster[256];
1263 int rval = -1;
1264
1265 sprintf(sqlmaster, "select Value from NonlinearMapping where "
1266 "TVIN_PORT = %d and "
1267 "Item_ID = %d and ("
1268 "Level = 0 or Level = 25 or Level = 50 or Level = 75 or Level = 100);",
1269 source_type, data_type);
1270
1271 rval = this->select(sqlmaster, c);
1272
1273 if(c.moveToFirst()) {
1274 params[0] = c.getInt(0);
1275 params[1] = c.getInt(1);
1276 params[2] = c.getInt(2);
1277 params[3] = c.getInt(3);
1278 params[4] = c.getInt(4);
1279 }
1280 return rval;
1281}
1282
1283int CPqData::SetNonlinearMapping(tvpq_data_type_t data_type, tv_source_input_type_t source_type, int osd0, int osd25, int osd50, int osd75, int osd100)
1284{
1285
1286 int rval;
1287 char *err = NULL;
1288 int osdvalue[101];
1289 double step[4];
1290 char sql[256];
1291
1292 step[0] = (osd25 - osd0) / 25.0;
1293 step[1] = (osd50 - osd25) / 25.0;
1294 step[2] = (osd75 - osd50) / 25.0;
1295 step[3] = (osd100 - osd75) / 25.0;
1296
1297
1298 for(int i = 0; i <= 100; i++) {
1299 if(i == 0) {
1300 osdvalue[i] = osd0;
1301 } else if((i > 0) && (i <= 25)) {
1302 osdvalue[i] = osd0 + (int)(i * step[0]);
1303 } else if((i > 25) && (i <= 50)) {
1304 osdvalue[i] = osd25 + (int)((i - 25) * step[1]);
1305 } else if((i > 50) && (i <= 75)) {
1306 osdvalue[i] = osd50 + (int)((i - 50) * step[2]);
1307 } else if((i > 75) && (i <= 100)) {
1308 osdvalue[i] = osd75 + (int)((i - 75) * step[3]);
1309 }
1310 sprintf(sql, "update NonLinearMapping set Value = %d where TVIN_PORT = %d and Item_ID = %d and Level = %d ;", osdvalue[i], source_type, data_type, i);
1311 if(!(this->exeSql(sql))) {
1312 return -1;
1313 }
1314 }
1315 return 0;
1316}
1317
1318int CPqData::SetNonlinearMappingByName(const char *name, tvpq_data_type_t data_type, tv_source_input_type_t source_type, int osd0, int osd25, int osd50, int osd75, int osd100)
1319{
1320 int rval;
1321 char *err = NULL;
1322 int osdvalue[101];
1323 double step[4];
1324 char sql[256];
1325
1326 step[0] = (osd25 - osd0) / 25.0;
1327 step[1] = (osd50 - osd25) / 25.0;
1328 step[2] = (osd75 - osd50) / 25.0;
1329 step[3] = (osd100 - osd75) / 25.0;
1330
1331 for(int i = 0; i <= 100; i++) {
1332 if(i == 0) {
1333 osdvalue[i] = osd0;
1334 } else if((i > 0) && (i <= 25)) {
1335 osdvalue[i] = osd0 + (int)(i * step[0]);
1336 } else if((i > 25) && (i <= 50)) {
1337 osdvalue[i] = osd25 + (int)((i - 25) * step[1]);
1338 } else if((i > 50) && (i <= 75)) {
1339 osdvalue[i] = osd50 + (int)((i - 50) * step[2]);
1340 } else if((i > 75) && (i <= 100)) {
1341 osdvalue[i] = osd75 + (int)((i - 75) * step[3]);
1342 }
1343 memset(sql, '\0', 256);
1344 sprintf(sql, "insert into %s(TVIN_PORT, Item_ID, Level, Value) values(%d,%d,%d,%d);", name, source_type, data_type, i, osdvalue[i]);
1345 if(!(this->exeSql(sql))) {
1346 return -1;
1347 }
1348 }
1349 return 0;
1350}
1351
1352int CPqData::LoadPQData(tvpq_data_type_t data_type, tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, int flag)
1353{
1354 CSqlite::Cursor c;
1355 int rval;
1356 char sqlmaster[256];
1357 int mode = is2dOr3d;
1358 tvpq_data_t *pq_data = NULL;
1359 int *pq_nodes = NULL;
1360
1361 switch(data_type) {
1362 case TVPQ_DATA_BRIGHTNESS:
1363 sprintf(sqlmaster, "select TableName from GeneralContrastBrightnessTable where "
1364 "TVIN_PORT = %d and "
1365 "TVIN_SIG_FMT = %d and "
1366 "TVIN_TRANS_FMT = %d and "
1367 "%s = %d;",
1368 source_port, sig_fmt, mode, ID_FIELD, BRIGHTNESS_ID);
1369 pq_data = pq_bri_data;
1370 pq_nodes = &bri_nodes;
1371 break;
1372 case TVPQ_DATA_CONTRAST:
1373 sprintf(sqlmaster, "select TableName from GeneralContrastBrightnessTable where "
1374 "TVIN_PORT = %d and "
1375 "TVIN_SIG_FMT = %d and "
1376 "TVIN_TRANS_FMT = %d and "
1377 "%s = %d;",
1378 source_port, sig_fmt, mode, ID_FIELD, CONTRAST_ID);
1379 pq_data = pq_con_data;
1380 pq_nodes = &con_nodes;
1381 break;
1382 case TVPQ_DATA_HUE:
1383 sprintf(sqlmaster, "select TableName from GeneralSaturationHueTable where "
1384 "TVIN_PORT = %d and "
1385 "TVIN_SIG_FMT = %d and "
1386 "TVIN_TRANS_FMT = %d and "
1387 "%s = %d;",
1388 source_port, sig_fmt, mode, ID_FIELD, HUE_ID);
1389 pq_data = pq_hue_data;
1390 pq_nodes = &hue_nodes;
1391 break;
1392 case TVPQ_DATA_SATURATION:
1393 sprintf(sqlmaster, "select TableName from GeneralSaturationHueTable where "
1394 "TVIN_PORT = %d and "
1395 "TVIN_SIG_FMT = %d and "
1396 "TVIN_TRANS_FMT = %d and "
1397 "%s = %d;",
1398 source_port, sig_fmt, mode, ID_FIELD, SATURATION_ID);
1399 pq_data = pq_sat_data;
1400 pq_nodes = &sat_nodes;
1401 break;
1402 case TVPQ_DATA_SHARPNESS:
1403 //sprintf(sqlmaster, "select TableName from GeneralSharpnessTable where "
1404 sprintf(sqlmaster, "select TableName from GeneralSharpnessG9Table where "
1405 "TVIN_PORT = %d and "
1406 "TVIN_SIG_FMT = %d and "
1407 "TVIN_TRANS_FMT = %d and "
1408 "%s = %d;",
1409 source_port, sig_fmt, mode, ID_FIELD, SHARPNESS_ID);
1410 pq_data = NULL;
1411 pq_nodes = &sha_nodes;
1412 break;
1413 default:
1414 break;
1415 }
1416
1417 rval = this->select(sqlmaster, c);
1418
1419 if(c.moveToFirst()) {
1420 switch(data_type) {
1421 case TVPQ_DATA_BRIGHTNESS:
1422 case TVPQ_DATA_CONTRAST:
1423 case TVPQ_DATA_HUE:
1424 case TVPQ_DATA_SATURATION:
1425 sprintf(sqlmaster, "select TotalNode, NodeNumber, IndexValue, RegValue, StepUp from %s order by NodeNumber asc;", c.getString(0).string());
1426 break;
1427 case TVPQ_DATA_SHARPNESS:
1428 sprintf(sqlmaster, "select TotalNode, NodeNumber, RegType, RegAddr, RegMask, IndexValue, RegValue, StepUp from %s order by NodeNumber asc;", c.getString(0).string());
1429 break;
1430 default:
1431 break;
1432 }
1433 }
1434
1435 rval = this->select(sqlmaster, c);
1436
1437 if(c.moveToFirst()) {
1438 if(data_type == TVPQ_DATA_SHARPNESS) {
1439 *pq_nodes = c.getInt(0);//TotalNode?
1440 int length = c.getCount() / (*pq_nodes);
1441 int index = 0;
1442 for(int i = 0; i < *pq_nodes; i++) {
1443 pq_sharpness_reg_data[i].length = length;
1444 }
1445 do {
1446 pq_sharpness_reg_data[index / length].reg_data[index % length].TotalNode = c.getInt(0);
1447 pq_sharpness_reg_data[index / length].reg_data[index % length].NodeValue = c.getInt(1);
1448 pq_sharpness_reg_data[index / length].reg_data[index % length].Value.type = c.getUInt(2);
1449 pq_sharpness_reg_data[index / length].reg_data[index % length].Value.addr = c.getUInt(3);
1450 pq_sharpness_reg_data[index / length].reg_data[index % length].Value.mask = c.getUInt(4);
1451 pq_sharpness_reg_data[index / length].reg_data[index % length].IndexValue = c.getInt(5);
1452 pq_sharpness_reg_data[index / length].reg_data[index % length].Value.val = c.getUInt(6);
1453 pq_sharpness_reg_data[index / length].reg_data[index % length].step = c.getF(7);
1454 index++;
1455 } while(c.moveToNext());
1456 } else {
1457 int index = 0;
1458 do {
1459 pq_data[index].TotalNode = c.getInt(0);
1460 pq_data[index].NodeValue = c.getInt(1);
1461 pq_data[index].IndexValue = c.getInt(2);
1462 pq_data[index].RegValue = c.getInt(3);
1463 pq_data[index].step = c.getF(4);
1464 if(flag == 1) {
1465 if(data_type == TVPQ_DATA_BRIGHTNESS) {
1466 LOGD("%s, bri pq_data[%d].RegValue = %d\n", "TV", index, pq_data[index].RegValue);
1467 pq_data[index].RegValue -= 64;
1468 LOGD("%s, bri pq_data[%d].RegValue + 64 = %d\n", "TV", index, pq_data[index].RegValue);
1469 } else if(data_type == TVPQ_DATA_CONTRAST) {
1470 LOGD("%s, con pq_data[%d].RegValue = %d\n", "TV", index, pq_data[index].RegValue);
1471 pq_data[index].RegValue += 64;
1472 LOGD("%s, con pq_data[%d].RegValue + 64 = %d\n", "TV", index, pq_data[index].RegValue);
1473 }
1474 }
1475 index++;
1476 } while(c.moveToNext());
1477 *pq_nodes = index;
1478 }
1479 }
1480
1481 return rval;
1482}
1483
1484int CPqData::LoadAllPQData(tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, int flag)
1485{
1486 int rval = -1;
1487 rval = LoadPQData(TVPQ_DATA_BRIGHTNESS, source_port, sig_fmt, is2dOr3d, trans_fmt, flag);
1488 if(rval) {
1489 return rval;
1490 }
1491 rval = LoadPQData(TVPQ_DATA_CONTRAST, source_port, sig_fmt, is2dOr3d, trans_fmt, flag);
1492 if(rval) {
1493 return rval;
1494 }
1495 rval = LoadPQData(TVPQ_DATA_SATURATION, source_port, sig_fmt, is2dOr3d, trans_fmt, -1);
1496 if(rval) {
1497 return rval;
1498 }
1499 rval = LoadPQData(TVPQ_DATA_HUE, source_port, sig_fmt, is2dOr3d, trans_fmt, -1);
1500 if(rval) {
1501 return rval;
1502 }
1503 rval = LoadPQData(TVPQ_DATA_SHARPNESS, source_port, sig_fmt, is2dOr3d, trans_fmt, -1);
1504 if(rval) {
1505 return rval;
1506 }
1507 return rval;
1508}
1509
1510typedef enum initial_type_e {
1511 TYPE_PMode = 0,
1512 TYPE_PMode_Default,
1513 TYPE_Nonlinear,
1514 TYPE_NonLinear_Default,
1515 TYPE_VGA_AUTO,
1516 TYPE_OVERSCAN,
1517} initial_type_t;
1518
1519const char *Pmode_name[6] = {
1520 "Picture_Mode",
1521 "Picture_Mode_Default",
1522 "NonlinearMapping",
1523 "NonlinearMapping_Default",
1524 "VGA_AutoParams",
1525 "OVERSCAN"
1526};
1527
1528void CPqData::initialTable(int type)
1529{
1530 vpp_pq_para_t pmode_default;
1531
1532 pmode_default.backlight = 100;
1533 pmode_default.brightness = 50;
1534 pmode_default.contrast = 50;
1535 pmode_default.hue = 50;
1536 pmode_default.nr = 0;
1537 pmode_default.saturation = 50;
1538 pmode_default.sharpness = 50;
1539
1540
1541 switch(type) {
1542 case TYPE_PMode:
1543 case TYPE_PMode_Default:
1544 for(int i = 0; i < 6; i++ ) {
1545 for(int j = 0; j < 4; j++) {
1546 PQ_SetPQModeParamsByName(Pmode_name[type], (tv_source_input_type_t) i, (vpp_picture_mode_t)j, &pmode_default);
1547 }
1548 }
1549 break;
1550 case TYPE_Nonlinear:
1551 case TYPE_NonLinear_Default:
1552 for(int i = 0; i < 6; i++ ) {
1553 for(int j = 0; j < 5; j++) {
1554 SetNonlinearMappingByName(Pmode_name[type], (tvpq_data_type_t) j, (tv_source_input_type_t)i, 0, (int)255 / 4.0, (int)255 * 2 / 4.0, (int)255 * 3 / 4.0, 255);
1555 }
1556 }
1557 break;
1558 case TYPE_VGA_AUTO:
1559 break;
1560 case TYPE_OVERSCAN:
1561 break;
1562 }
1563}
1564
1565/*void CPqData::transferFixTable()
1566{
1567 char sql[256];
1568 char * err = NULL;
1569 char ** rsltReg = NULL;
1570 int rval, rows, columns;
1571 unsigned int tvin, sig, trans;
1572 char tablename[256];
1573
1574 sprintf(sql, "Select TVIN_PORT, TVIN_SIG_FMT, TVIN_TRANS_FMT, TableName from GeneralSharpnessTable where TableID = 0;");
1575
1576 rval = sqlite3_get_table(DB, sql, &rsltReg, &rows, &columns, &err);
1577
1578 if(rval) {
1579 if(rsltReg != NULL) {
1580 sqlite3_free_table(rsltReg);
1581 rsltReg = NULL;
1582 }
1583 if(err != NULL) {
1584 sqlite3_free(err);
1585 err = NULL;
1586 }
1587 return;
1588 } else {
1589 for(int i=1; i<=rows; i++) {
1590 memset(sql,'\0',256);
1591
1592 sscanf(rsltReg[i*columns], "%u", &tvin);
1593 sscanf(rsltReg[i*columns+1], "%u", &sig);
1594 sscanf(rsltReg[i*columns+2], "%u", &trans);
1595 sscanf(rsltReg[i*columns+3], "%s", tablename);
1596
1597 sprintf(sql, "insert into GeneralCommonTable(TVIN_PORT, TVIN_SIG_FMT, TVIN_TRANS_FMT, TableID, TableName) values(%d,%d,%d,0,\"%s\");",
1598 tvin, sig, trans, tablename);
1599 rval = sqlite3_exec(DB, sql, NULL, NULL, &err);
1600 if(rval) {
1601 if(err != NULL) {
1602 sqlite3_free(err);
1603 err = NULL;
1604 }
1605 return;
1606 }
1607 if(err != NULL) {
1608 sqlite3_free(err);
1609 err = NULL;
1610 }
1611 }
1612 memset(sql,'\0',256);
1613 sprintf(sql, "delete from GeneralSharpnessTable where TableID = 0;");
1614 rval = sqlite3_exec(DB, sql, NULL, NULL, &err);
1615 if(rval) {
1616 if(err != NULL) {
1617 sqlite3_free(err);
1618 err = NULL;
1619 }
1620 return;
1621 }
1622 if(err != NULL) {
1623 sqlite3_free(err);
1624 err = NULL;
1625 }
1626 }
1627}*/
1628
1629int CPqData::PQ_GetPhaseArray(am_phase_t *am_phase)
1630{
1631 CSqlite::Cursor c;
1632 int iOutRet = 0;
1633 char sqlmaster[256];
1634 sprintf(sqlmaster, "select Phase from Phase order by Format ASC; ");
1635
1636 this->select(sqlmaster, c);
1637 int nums = 0;
1638 am_phase->length = c.getCount();
1639 if(c.moveToFirst()) {
1640 do {
1641 am_phase->phase[nums] = c.getInt(0);//col index is 0[Phase]
1642 nums++;
1643 } while(c.moveToNext());
1644 }
1645 //
1646 return nums;
1647}
1648
1649