-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPhoneCommand.h
More file actions
1471 lines (1233 loc) · 54 KB
/
PhoneCommand.h
File metadata and controls
1471 lines (1233 loc) · 54 KB
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
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
#ifndef _PHONECOMMAND_H_BY_XPJ_20100928_33F51A91_858A_4779_BCC6_4AD48583B6BD_
#define _PHONECOMMAND_H_BY_XPJ_20100928_33F51A91_858A_4779_BCC6_4AD48583B6BD_
/*******************************************************************************************/
//
// History:
// -------------
// 1 V2.0.0000 2010/09/28 Xiaoping.Jing
// New release based on 'DiagChan'.
//
/*******************************************************************************************/
// The following ifdef block is the standard way of creating macros which make exporting
// from a DLL simpler. All files within this DLL are compiled with the PHONECOMMAND_EXPORTS
// symbol defined on the command line. this symbol should not be defined on any project
// that uses this DLL. This way any other project whose source files include this file see
// PHONECOMMAND_API functions as being imported from a DLL, wheras this DLL sees symbols
// defined with this macro as being exported.
#ifdef SP_EXPORT
#undef SP_EXPORT
#endif
#ifdef __cplusplus
#ifdef PHONECOMMAND_EXPORTS
#define SP_EXPORT extern "C" __declspec (dllexport)
#else
#define SP_EXPORT extern "C" __declspec (dllimport)
#endif
#else
#ifdef PHONECOMMAND_EXPORTS
#define SP_EXPORT __declspec (dllexport)
#else
#define SP_EXPORT __declspec (dllimport)
#endif
#endif
// Include files
#include "ICommChannel.h"
//
#ifdef SP_API
#undef SP_API
#endif
#define SP_API __stdcall
// HANDLE
typedef PVOID SP_HANDLE;
#define INVALID_PHONE_HANDLE (NULL)
#ifdef __SS__
#include "DefPhoneAlarmInformation.h"
#define SPERR_BASE (DEF_ALARM_PHONE_SPRD_BEGIN_ERROR)
#else
#define SPERR_BASE (0)
#endif
/*******************************************************************************************/
//
// Error Code
//
/*******************************************************************************************/
typedef enum
{
SPERR_SUCC = 0, // 0: Operation success
SPERR_FAIL = SPERR_BASE + 1, // 1: Operation failed
SPERR_UNKNOWN, // 2: Unknown error
SPERR_INVALID_PARAMETER, // 3: Invalid parameters, such as NULL pointer
SPERR_SYSTEM_FAIL, // 4: System operate error, such as CreateThread API failed
SPERR_INVALID_PHONE_HANDLE, // 5: Invalid handle of phone
SPERR_CHANNEL_OPEN_FAIL, // 6: DIAG. Channel open failed
SPERR_CHANNEL_NOT_OPEN, // 7: DIAG. Channel not open, Invoke SP_BeginPhoneTest first
SPERR_OPERATION_TIMEOUT, // 8: Operation timeout
SPERR_BUFFER_TOO_SMALL, // 9: Input buffer is too small
SPERR_WRITE_FAIL, // 10: Write buffer into port failed
SPERR_NO_RESPONSE_RECEIVED, // 11: No response received from port
SPERR_INVALID_RESPONSE_LEN, // 12: Invalid length of packet or data received
SPERR_INVALID_RESPONSE_DATA, // 13: Invalid data received
SPERR_INVALID_RESPONSE_CRC, // 14: Invalid CRC of received packet
SPERR_RECV_TYPE_IS_DIFFERENT, // 15: 'type' of received packet is different from request packet
SPERR_RECV_SUBTYPE_IS_DIFFERENT, // 16: 'subtype' of received packet is different from request packet
SPERR_INVALID_MAGIC_NUMBER, // 17: Invalid magic number of phase check
SPERR_REQUEST_OPERATION_FAIL, // 18: Request operation failed
SPERR_MAX
}SPERR_ERROR;
#define _SPOK(e) (SPERR_SUCC == (e))
/*******************************************************************************************/
//
// Macro definition
//
/*******************************************************************************************/
// TimeOut definition
#define TIMEOUT_1S 1000
#define TIMEOUT_2S 2000
#define TIMEOUT_3S 3000 // default timeout
#define NO_TIMEOUT 0
// attribute
typedef enum
{
SP_ATTR_TIMEOUT = 1,
SP_ATTR_LOG = 2,
SP_ATTR_ENDIAN = 3,
SP_ATTR_SOCKET = 4,
SP_ATTR_MAGICNUM = 5 // [11/8/2011 Xiaoping.Jing] phase check magic number:
// 1. #define SP09_SPPH_MAGIC_NUMBER (0X53503039) // "SP09"
// 2. #define SP05_SPPH_MAGIC_NUMBER (0X53503035) // "SP05"
} SP_ATTR_ENUM;
//////////////////////////////////////////////////////////////////////////
// Phone Mode
#define RM_RUNMODE_REQ_COMMAND 0x01
#define RM_COMMAND_T 0xFE
#define RM_ENABLE_SLEEP 0x40 // enable arm deep sleep
#define RM_U0_AS_DIAG 0x80 // uart0 used as diag port(debug)
typedef enum
{
RM_NORMAL_MODE = 0x00,
// GSM
RM_CALIBRATION_MODE = 0x01, // in calibration mode.
RM_CALIBR_POST_MODE = 0x05, // in calibration post mode
RM_CALIBR_POST_NO_LCM_MODE = 0x06, // in calibration post mode without lcm,app
// TD
RM_TD_CALITRATION_MODE = 0x07, // in td calibration mode.
RM_TD_CALIBR_POST_MODE = 0x08, // in td calibration post mode
RM_TD_CALIBR_POST_NO_LCM_MODE = 0x09, // in td calibration post mode without lcm, app
RM_CALIBR_NV_ACCESS_MODE = 0x0A // in fast write nv mode
}RM_MODE_ENUM;
#define IMEI_MAX_LENGTH 15
#define IMEI_STR_LENGTH 16
#define BT_ADDR_STR_LENGTH 13
#define PROD_INFO_SN_LEN 24
#define WIFI_LEN 6
#define GPS_LEN 44
// Register access mode
typedef enum
{
PC_BYTE_ACCESS = 0,
PC_WORD_ACCESS,
PC_DWORD_ACCESS
} PC_ADDR_ACESS_MODE_E;
//////////////////////////////////////////////////////////////////////////
// Keyboard: virtual key code
#define SCI_VK_0 ('0')
#define SCI_VK_1 ('1')
#define SCI_VK_2 ('2')
#define SCI_VK_3 ('3')
#define SCI_VK_4 ('4')
#define SCI_VK_5 ('5')
#define SCI_VK_6 ('6')
#define SCI_VK_7 ('7')
#define SCI_VK_8 ('8')
#define SCI_VK_9 ('9')
#define SCI_VK_STAR ('*')
#define SCI_VK_POUND ('#')
#define SCI_VK_CALL 0x01
// If a key is used as both SCI_VK_POWER and SCI_VK_CANCEL, only use SCI_VK_POWER
#define SCI_VK_POWER 0x02
#define SCI_VK_CANCEL 0x03
#define SCI_VK_UP 0x04
#define SCI_VK_DOWN 0x05
#define SCI_VK_LEFT 0x06
#define SCI_VK_RIGHT 0x07
#define SCI_VK_MENU_SELECT 0x08
#define SCI_VK_MENU_CANCEL 0x09
#define SCI_VK_SIDE_UP 0x0A
#define SCI_VK_SIDE_DOWN 0x0B
#define SCI_VK_OK 0x0C
#define SCI_VK_WEB 0x0D
#define SCI_VK_CAMERA 0x0E
//////////////////////////////////////////////////////////////////////////
// IMEI
#define MAX_IMEI_STR_LENGTH 16
#define MAX_IMEI_NV_LENGTH 8
#define NVID_IMEI1 0x5
#define NVID_IMEI2 0x179
//////////////////////////////////////////////////////////////////////////
// BlueTooth
#define MAX_BT_ADDR_NV_LENGTH 6
#define MAX_BT_ADDR_STR_LENGTH 13
/* BT commands */
#define BT_ENTER_DUT_MODE 0
#define BT_LEAVE_DUT_MODE 1
#define BT_SET_BD_ADDR 2
#define BT_GET_BD_ADDR 3
#define BT_START_RADIO_TEST 4
#define BT_STOP_RADIO_TEST 5
#define BT_START_AFC 6
#define BT_SET_DAC_VALUE 7
#define BT_STOP_AFC 8
#define BT_SAVE_DAC_VALUE 9
#define BT_LOAD_DAC_VALUE 10
typedef struct _tagRADIO_PARAM
{
unsigned int test_item;
unsigned int channel;
unsigned int payload_type;
unsigned int packet_type;
} RADIO_PARAM;
typedef union
{
unsigned char bd_addr[MAX_BT_ADDR_NV_LENGTH];
RADIO_PARAM radio_param;
unsigned int channel;
unsigned int dac;
} MSG_BT_T;
//////////////////////////////////////////////////////////////////////////
// WIFI
#define MAX_WIFI_ADDR_NV_LENGTH 6
#define MAX_WIFI_ADDR_STR_LENGTH 13
typedef enum
{
WIFI_DR_1MBPS = 1, // 1 Mbps
WIFI_DR_2MBPS = 2, // 2 Mbps
WIFI_DR_5MBPS = 5, // 5.5 Mbps
WIFI_DR_6MBPS = 6, // 6 Mbps
WIFI_DR_7MPBS = 7, // 6.5 Mbps
WIFI_DR_9MBPS = 9, // 9 Mbps
WIFI_DR_11MBPS = 11, // 11 Mbps
WIFI_DR_12MBPS = 12, // 12 Mbps
WIFI_DR_13MBPS = 13, // 13 Mbps
WIFI_DR_18MBPS = 18, // 18 Mbps
WIFI_DR_19MBPS = 19, // 19.5 Mbps
WIFI_DR_24MBPS = 24, // 24 Mbps
WIFI_DR_26MBPS = 26, // 26 Mbps
WIFI_DR_36MBPS = 36, // 36 Mbps
WIFI_DR_39MBPS = 39, // 39 Mbps
WIFI_DR_48MBPS = 48, // 48 Mbps
WIFI_DR_52MBPS = 52, // 52 Mbps
WIFI_DR_54MBPS = 54, // 54 Mbps
WIFI_DR_58MBPS = 58, // 58.5 Mbps
WIFI_DR_65MBPS = 65, // 65 Mbps
WIFI_DATE_RATE_MAX
} WIFI_DATA_RATE_ENUM;
typedef enum
{
WIFI_MODE_DSSS_BPSK = 0, // 0, DSSS BPSK, adapt for ratio = 1Mbps
WIFI_MODE_DSSS_DQPSK, // 1, DSSS DQPSK, adapt for ratio = 2Mbps
WIFI_MODE_DSSS_CCK, // 2, DSSS CCK, adapt for ratio = 5.5Mbps/11Mbps
WIFI_MODE_OFDM_BPSK, // 3, OFDM BPSK, adapt for ratio = 6Mbps/9Mbps
WIFI_MODE_OFDM_DQPSK, // 4, OFDM_DQPSK, adapt for ratio = 12Mbps/18Mbps
WIFI_MODE_16QAM, // 5, 16QAM, adapt for ratio = 24Mbps/36Mbps
WIFI_MODE_64QAM, // 6, 64QAM, adapt for ratio = 48Mbps/54Mbps
WIFI_MODE_MAX
}WIFI_MODE_ENUM; // RF调制方式
typedef enum
{
WIFI_LOAD_FACTOR = 0,
WIFI_SAVE_FACTOR,
WIFI_SET_FACOTR
} WIFI_FACTOR_ACTION;
typedef struct _tagWIFI_PWR_FACTOR_SET_T
{
unsigned int nOperRes; // 0: Operation pass, Other: Operation failed
unsigned int nPwrLevel; // Power Control Level
unsigned int nFactor; // the WIFI TX factor
} WIFI_PWR_FACTOR_SET_T, *LPWIFI_PWR_FACTOR_SET_T;
//////////////////////////////////////////////////////////////////////////
// CMMB
typedef struct _tagTV_PARAM_T
{
unsigned short nParam1;
unsigned short nParam2;
unsigned short nParam3;
unsigned short nParam4;
unsigned short nParam5;
unsigned short nParam6;
unsigned short nParam7;
unsigned short nParam8;
unsigned short nParam9;
unsigned short nDummy ;
} TV_PARAM_T, *pTV_PARAM_T;
typedef enum
{
SC6600V_MODE_NORMAL,
SC6600V_MODE_DEEPSLEEP, // Deep Sleep模式
SC6600V_MODE_POWER_OFF, // Power Off 模式
SC6600V_MODE_DISPLAYTEST // Display Test
} SC6600V_MODE_ENUM;
typedef enum _tagTOOL_TV_MSG_ID_E
{
TOOL_TV_SET_FREQ = 0, // 设置频点
TOOL_TV_GET_DEMODULATION, // 获得解调文件信息
TOOL_TV_GET_FREQERROR, // 获得频率偏差
TOOL_TV_GET_RSSI, // 获得RSSI大小
TOOL_TV_GET_BLOCKERROR, // 获得接收到的总块数,出错的总块数
TOOL_TV_SET_REGISTER, // 写入寄存器值
TOOL_TV_GET_REGISTER, // 读取寄存器值
TOOL_TV_GET_PLL, // 读取PLL的锁定信息
TOOL_TV_RESET_MODE, // 设置SC6600V模式
TOOL_TV_GET_MODE, // 查询当前SC6600V的模式
TOOL_TV_BB_SHOW_PICTURE, // 控制LCD
TOOL_TV_START_RAM_ROM_TEST, // 测试RAM/ROM
TOOL_TV_DISPLAY_PICTURE, // 显示图片
TOOL_TV_PERIPHERAL_TEST, // Peripheral测试
TOOL_TV_START_AV_DECODE_TEST, // 发起Audio Vedio Decode测试
TOOL_TV_GET_AV_DECODE_TEST_STATE, // 查询测试状态,确认是否测试完成
TOOL_TV_GET_AV_DECODE_TEST_RESULT, // Audio Vedio Decode测试结果
TOOL_TV_START_CMMB_DEMOD, // 发起CMMB Demod测试
TOOL_TV_START_DATA_DISPLAY, // 开始数据回放
TOOL_TV_LCD_DISPLAY, // LCD显示控制
TOOL_TV_READ_NV, // 读NV参数
TOOL_TV_WRITE_NV, // 写NV参数
TOOL_TV_GET_SERVICE_INFO, // 获取频点及频道信息
TOOL_TV_PLAY_BY_PARAM, // 根据给定频点及频道信息进行播放
TOOL_TV_SEARCH_NETWORK, // 搜索频道
TOOL_TV_SMD_CHECK, // SMD检测
TOOL_TV_CLOSE_WAITING_WIN, // 关闭等待窗口(非工具命令)
TOOL_TV_CMD_INVALID // 无效命令
} TOOL_TV_MSG_ID_E;
typedef enum _tagPERIPHERAL_TEST_ENUM
{
UART0_UART0 = 0,
RW_I2C,
RW_SPI,
RW_GPIOS,
RW_SIM,
BUS_MONITOR
} PERIPHERAL_TEST_ENUM;
typedef enum _tagAV_DECODE_ENUM
{
MP3 = 1,
H264_AAC,
AVS_AAC
} AV_DECODE_ENUM;
typedef enum _tagLCD_TEST_ENUM
{
LCD_TEST_RED,
LCD_TEST_YELLOW,
LCD_TEST_BLUE,
LCD_TEST_GREEN,
LCD_TEST_VERTICAL, //竖条
LCD_TEST_CROSS //横条
} LCD_TEST_ENUM;
//////////////////////////////////////////////////////////////////////////
// DSP debug
typedef enum
{
DSPDBG_ACCESS_BYTE = 1,
DSPDBG_ACCESS_WORD = 2,
DSPDBG_ACCESS_DWORD = 4
} DSPDBG_MEMO_ACCESS_MODE;
typedef enum
{
NORMAL_NULL_FRAME,
DSP_DEBUG_NORMAL_TX_FRAME,
DSP_DEBUG_RACH_FRAME,
DSP_DEBUG_MONITOR_FRAME,
DSP_DEBUG_IDLE_FRAME,
DSP_DEBUG_END
} FRAME_TYPE_NULLSTATE_E;
//////////////////////////////////////////////////////////////////////////
// GPS
typedef struct
{
BYTE byEngineSn[24];
DWORD dwMapVersion;
BYTE byActivateCode[16];
} GPS_NV_INFO_T, *LPGPS_NV_INFO_T;
//////////////////////////////////////////////////////////////////////////
// Fast NV access structure
#define FNAMASK_WRITE_IMEI1 0x01 // BIT0
#define FNAMASK_WRITE_IMEI2 0x02 // BIT1
#define FNAMASK_WRITE_BTADDR 0x04 // BIT2
#define FNAMASK_WRITE_GPSINFO 0x08 // BIT3
#define FNAMASK_WRITE_IMEI3 0x10 // BIT4
#define FNAMASK_WRITE_IMEI4 0x20 // BIT5
#define FNAMASK_WRITE_WIFIADDR 0x40 // BIT6
typedef struct _tagFASTNVACCESS_T
{
DWORD dwOperMask;
unsigned char szImei1 [MAX_IMEI_STR_LENGTH ];
unsigned char szImei2 [MAX_IMEI_STR_LENGTH ];
unsigned char szImei3 [MAX_IMEI_STR_LENGTH ];
unsigned char szImei4 [MAX_IMEI_STR_LENGTH ];
unsigned char szBTAddr [MAX_BT_ADDR_STR_LENGTH ];
unsigned char szWIFIAddr[MAX_WIFI_ADDR_STR_LENGTH];
GPS_NV_INFO_T GpsInfo;
}FASTNVACCESS_T, *LPFASTNVACCESS_T;
//////////////////////////////////////////////////////////////////////////
// Calibration and final test flag (adc_reserved[7])
#define FLAG_PCS_AGC_CALIBRATED 0x00000001 // PCS AGC calibrated pass
#define FLAG_PCS_APC_CALIBRATED 0x00000002 // PCS APC calibrated pass
#define FLAG_DCS_AGC_CALIBRATED 0x00000004 // DCS AGC calibrated pass
#define FLAG_DCS_APC_CALIBRATED 0x00000008 // DCS APC calibrated pass
#define FLAG_GSM_AGC_CALIBRATED 0x00000010 // GSM AGC calibrated pass
#define FLAG_GSM_APC_CALIBRATED 0x00000020 // GSM APC calibrated pass
#define FLAG_850_AGC_CALIBRATED 0x00000040 // 850 AGC calibrated pass
#define FLAG_850_APC_CALIBRATED 0x00000080 // 850 APC calibrated pass
#define FLAG_GSM_AFC_CALIBRATED 0x00000100 // GSM AFC calibrated pass
#define FLAG_ADC_CALIBRATED 0x00000200 // ADC calibrated pass
#define FLAG_PCS_FINAL_TESTED 0x00000400 // PCS final tested pass
#define FLAG_DCS_FINAL_TESTED 0x00000800 // DCS final tested pass
#define FLAG_GSM_FINAL_TESTED 0x00001000 // GSM final tested pass
#define FLAG_850_FINAL_TESTED 0x00002000 // 850 final tested pass
#define FLAG_TD_AFC_CALIBRATED 0x00004000 // TD AFC calibrated pass
#define FLAG_TD_APC_CALIBRATED 0x00008000 // TD APC calibrated pass
#define FLAG_TD_AGC_CALIBRATED 0x00010000 // TD AGC calibrated pass
#define FLAG_TD_FINAL_TESTED 0x00020000 // TD final tested pass
#define FLAG_ANTENNA_TESTED 0x00040000 // Antenna tested pass
#define FLAG_CMMB_TESTED 0x00080000 // CMMB tested pass
#define FLAG_RESERVED1 0x00100000 // Reserved
#define FLAG_RESERVED2 0x00200000 // Reserved
#define FLAG_RESERVED3 0x00400000 // Reserved
#define FLAG_RESERVED4 0x00800000 // Reserved
#define FLAG_RESERVED5 0x01000000 // Reserved
#define FLAG_RESERVED6 0x02000000 // Reserved
#define FLAG_RESERVED7 0x04000000 // Reserved
#define FLAG_MMI_TESTED 0x08000000 // MMI CIT tested pass
#define FLAG_CUSTOM1 0x10000000 // For customer definition
#define FLAG_CUSTOM2 0x20000000 // For customer definition
#define FLAG_CUSTOM3 0x40000000 // For customer definition
#define FLAG_CUSTOM4 0x80000000 // For customer definition
#define UNUSED_PARAM 0x00
#define NV_GSM_RF_AERO2_AFC_RANGE_NUM (17)
#define NV_GSM_RF_POWER_FACTOR_NUM (80)
typedef enum
{
CALI_CALIBRATION_ALL = 0X0,
CALI_ADC, //01 'adc'
CALI_AFC_CENTER, //02 'aero1_RF_AFC_STRUCT.afc_center'
CALI_AFC_HZ_6BITS, //03 'aero1_RF_AFC_STRUCT.afc_slop_hz_per_6bits'
CALI_AFC_SLOPE, //04 'aero2_RF_AFC_STRUCT.slope_struct.slope_value_arr[17]'
CALI_AFC_SLOPE_LEN, //05 'aero2_RF_AFC_STRUCT.slope_length'
CALI_AFC_CDAC, //06 'aero2_RF_AFC_STRUCT.CDAC'
CALI_AFC_CAFC, //07 'aero2_RF_AFC_STRUCT.CAFC'
CALI_RAMP_TABLE, //08 'RF_ramp_table_T.stageX.RF_ramp_up_table_stageX[20]'
CALI_RAMP_TABLE_CONST_UP, //09 'rf_ramp_param_constant_up[16]'
CALI_RAMP_TABLE_CONST_DN, //0A 'rf_ramp_param_constant_down[16]'
CALI_RAMP_UP_PARAM_NUM, //0B 'rf_ramp_up_param_num'
CALI_RAMP_DELTA_TIMING, //0C 'RF_ramp_delta_timing[16]'
CALI_RAMP_DUARATOIN, //0D 'RF_ramp_PA_power_on_duration[16]'
CALI_AFC_RANGE, //0E 'aero2_RF_AFC_STRUCT.slope_struct.afc_range_arr[17]'
CALI_AFC_SLOPE_RECI, //0F 'aero2_RF_AFC_STRUCT.slope_struct.slope_value_reciprocal_arr[17]'
CALI_TX_COMP_ARFCN_INDEX, //10 'TX_compensate_boundary_arfcn_index[5]'
CALI_RX_COMP_ARFCN_INDEX, //11 ''
CALI_RX_COMP_VALUE, //12 'RX_compensate_value[75]'
CALI_TX_ARFCN, //13
CALI_TX_PCL, //14 'RF_ramppwr_step_factor[80]'
CALI_TX_PWR_STEP_FACTOR, //15
CALI_RX_ARFCN, //16
CALI_AGC_CRTL_WORD, //17 'agc_ctrl_word[91]'
CALI_MAX_RF_GAIN_INDEX, //18
CALI_RSSI, //19
CALI_RXLEV, //1A
CALI_ACTIVE_DEACTIVE, //1B
CALI_TX_ON_OFF, //1C
CALI_RX_ON_OFF, //1D
CALI_IMEI, //1E
CALI_CHIP_ID, //1F
CALI_SAVE_TO_NV, //20
CALI_RF_SOLUTION, //21
CALI_MODE_READY, //22 refered by ref ucom cr108228
CALI_IMEI1, //23
//for MCS5-9
CALI_8PSK_TX_PWR_STEP_FACTOR = 0x24, //0x24 '8psk_step_factor'
CALI_8PSK_TX_PWR_TX_GAIN, //0x25 '8psk_tx_gain_table.8psk_tx_gain[5]'
CALI_8PSK_RAMP_DELTA_TIMING, //0x26
CALI_8PSK_RAMP_DUARATOIN, //0x27
CALI_NOSINGAL_RXTXLOOP = 0x28, //0x28 (value defined by tools team)
CALI_RXADC_DCVOLTAGE, //0x29
CALI_MODE_T2G_INIT, //0x2A
CALI_MODE_T2G, //0x2B
CALI_FDT = 0x2D, //0x2D
//====================
CALI_OSCI_TEMP_COM_IN_DAC = 0x30,
// int16 osci_temp_comp_in_dac[ NUM_TEMP_BANDS ]; // In Hz
CALI_TEMPERATURE_GSM_TX_COMPENSATE,
CALI_TEMPERATURE_EDGE_TX_COMPENSATE,
CALI_TEMPERATURE_GSM_TXPOWER_COMPENSATE,
CALI_TEMPERATURE_EDGE_TXPOWER_COMPENSATE,
// int16 temperature_gsm_tx_compensate_value[9];
// int16 temperature_edge_tx_compensate_value[9];
// int16 volatge_gsm_txpower_compensate_value[6];
// int16 volatge_edge_txpower_compensate_value[6];
CALI_TX_COMPENSATE_BOUNDARY_ARFCN_INDEX,
// int16 TX_compensate_boundary_arfcn_index[4];
CALI_TEMPERATURE_RX_COMPENSATE_ADC,
CALI_TEMPERATURE_RX_LEVEL_COMPENSATE,
CALI_TEMPERATURE_TX_COMPENSATE_ADC,
CALI_TEMPERATURE_TX_RAMPWR_STEP_FACTOR,
// int16 temperature_RX_compensate_boundary_ADC[4];
// int16 temperature_rx_level_compensate_value[5];
// int16 temperature_TX_compensate_boundary_ADC[4];
// int16 temperature_TX_rampwr_step_factor[5];
CALI_RF_EDGE_DELTA_TIMING,
CALI_RF_EDGE_POWER_ON_DURATION,
//byhwt-5 change for edge
// int16 rf_edge_delta_timing; //int16 ramp_switch_level;
//int16 rf_edge_power_on_duration;//uint16 afc_alg_bias;
CALI_END
} L1_CALIBRATION_PARAM_E;
typedef enum
{
DSP_TX_TYPE_ALL_ZERO,
DSP_TX_TYPE_ALL_SET,
DSP_TX_TYPE_RANDOM,
DSP_TX_TYPE_RACH,
DSP_TX_TYPE_EDGE
} DSP_TX_TYPE_E;
//on tool side:MCS1-9 use value 0-8,arm layer1 should trans this value to TX_CODE_MCS1-9
enum
{
TOOL_TX_CODE_MCS1 = 0x00,
TOOL_TX_CODE_MCS2 = 0x01,
TOOL_TX_CODE_MCS3 = 0x02,
TOOL_TX_CODE_MCS4 = 0x03,
TOOL_TX_CODE_MCS5 = 0x04,
TOOL_TX_CODE_MCS6 = 0x05,
TOOL_TX_CODE_MCS7 = 0x06,
TOOL_TX_CODE_MCS8 = 0x07,
TOOL_TX_CODE_MCS9 = 0x08
};
typedef struct _tagGSM_CELL_INFO
{
int nMcc;
int nMnc;
int nLac;
int nCellId;
int nBsic;
int nArfcn;
int nRxlev;
int nRxqual;
} GSM_CELL_INFO, *LPGSM_CELL_INFO;
/*******************************************************************************************/
//
// Calibration Structure
//
/*******************************************************************************************/
// Band definition
typedef enum
{
PC_CALI_INVALID_BAND = -1, // Invalid Band
PC_CALI_EGSM900 = 0, // EGSM900
PC_CALI_DCS1800 = 1, // DCS1800
PC_CALI_PCS1900 = 3, // PCS1900
PC_CALI_GSM850 = 4, // GSM850M
PC_CALI_TD = 15 // TD
} PC_CALI_MS_BAND_E;
// ADC
#define MAX_ADC_CHANNEL_NUM 8
typedef enum
{
SUCCESS_COMPATIBLE = 0x00,
INVALID_ADC_SOURCE = 0x01,
NEED_CALIBRATION = 0x02,
DNOT_CALIBRATION = 0x0F
} ADC_CALIBRATION_FLAG;
// ADC NV index
enum
{
INDEX_ADC0 = 0, // 0 : adc0
INDEX_ADC1, // 1 : adc1
INDEX_BATTERY0, // 2 : battery0 V-BATT 4.2V
INDEX_BATTERY1, // 3 : battery1 V-BATT 3.6V
INDEX_RESERVED0, // 4 : adc_reserved0
INDEX_RESERVED1, // 5 : adc_reserved1
INDEX_RESERVED2, // 6 : adc_reserved2
INDEX_RESERVED3, // 7 : adc_reserved3
INDEX_RESERVED4, // 8 : adc_reserved4
INDEX_RESERVED5, // 9 : adc_reserved5
INDEX_RESERVED6, // 10 : adc_reserved6
INDEX_RESERVED7 // 11 : adc_reserved7 calibration flag
};
typedef struct _tagPC_ADC_T
{
unsigned char channel;
unsigned short adc;
unsigned char califlag;
unsigned char nvoffset;
} PC_ADC_T, *LPPC_ADC_T;
// GSM TX
typedef struct _tagPC_TX_PARAM_T
{
DSP_TX_TYPE_E data_type;
unsigned short coding_scheme;
unsigned short training_sequence;
unsigned short puncture_type;
} PC_TX_PARAM_T, *LPPC_TX_PARAM_T;
typedef struct _tagPC_PWR_FACTOR_PARAM_T
{
PC_CALI_MS_BAND_E eBand; // Band
unsigned short uArfcn; // ARFCN
unsigned short uPCL; // Power Level
unsigned short uFactor; // Power Factor [0 - 32767]
} PC_PWR_FACTOR_PARAM_T, *LPPC_PWR_FACTOR_PARAM_T;
// AFC
typedef struct _tagPC_AFC_REQ_T
{
PC_CALI_MS_BAND_E eBand; // Band
unsigned short uPCL; // Power Control Level, namely , PCL
unsigned short uArfcn; // Traffic Channel
bool bTCXO; // TCXO or DCXO
unsigned short uDacVal; // CDAC
unsigned short uAfcVal; // CAFC
} PC_AFC_REQ_T, *LPPC_AFC_REQ_T;
// APC
typedef struct _tagPC_APC_REQ_T
{
PC_PWR_FACTOR_PARAM_T pwrFactor;
} PC_APC_REQ_T, *LPPC_APC_REQ_T;
// AGC
typedef struct _tagPC_AGC_REQ_T
{
PC_CALI_MS_BAND_E eBand; // Band
unsigned short uArfcn; // arfcn
unsigned short uGainIndex; // gain index
unsigned short uGainValue; // gain value
} PC_AGC_REQ_T, *LPPC_AGC_REQ_T;
#define MAX_AGC_RESULT_NUM 40
typedef struct _tagPC_AGC_VALUE_CNF_T
{
int bValid;
unsigned short nRxlev;
unsigned short nRssi;
// ------------ Add for TD ------------ [[[
int nRssiNum;
unsigned short nRssiState[MAX_AGC_RESULT_NUM];
unsigned short nRssiVal[MAX_AGC_RESULT_NUM];
// ------------ End for TD ------------ ]]]
} PC_AGC_VALUE_CNF_T, *LPPC_AGC_VALUE_CNF_T;
// GSM NonSignal Final Test Command
typedef enum
{
MODE_RXTXLOOP_A,
MODE_RXTXLOOP_B,
MODE_RXTXLOOP_C
} L1_NONSIGNAL_MODE_E;
typedef enum
{
CMD_RXTXLOOP_NULL, //= 0x00, used as a state, real command should not be this value
CMD_RXTXLOOP_INITIATE,
CMD_RXTXLOOP_STARTLOOP,
CMD_RXTXLOOP_STOPLOOP,
CMD_RXTXLOOP_CHANGE_PCL, // change power level(must used in tch loopbacking state)
CMD_RXTXLOOP_CHANGE_TCHARFCN,
CMD_RXTXLOOP_GET_RXLEV,
CMD_RXTXLOOP_UPDATE_CALINV,
CMD_RXTXLOOP_MAX
} L1_RXTXLOOP_COMMAND_E;
// result enum of rxtx-loop state(sub action refer to sub state ), to notify diag command process result.
typedef enum
{
RET_RXTXLOOP_OK, //
RET_RXTXLOOP_WAKEDSP_FAIL,
RET_RXTXLOOP_MEASUREMENT_FAIL,
RET_RXTXLOOP_SCHSEARCH_FAIL,
RET_RXTXLOOP_SCHREAD_FAIL,
RET_RXTXLOOP_CAMP_FAIL,
RET_RXTXLOOP_STARTLOOP_FAIL,
RET_RXTXLOOP_CHANGEPCL_FAIL,
RET_RXTXLOOP_INIT_FAIL,
RET_RXTXLOOP_CHANGEARFCN_FAIL,
RET_RXTXLOOP_EXCEPTION,
RET_RXTXLOOP_GETRXLEV_FAIL,
RET_RXTXLOOP_MAX
} L1_RXTXLOOP_RESULT_E;
typedef struct _tagPC_NONSIGNAL_REQ_T
{
L1_NONSIGNAL_MODE_E eMode;
L1_RXTXLOOP_COMMAND_E eCmd;
PC_CALI_MS_BAND_E eBand;
unsigned short nArfcn;
unsigned short nTrafficTn;
unsigned short nTsc;
unsigned short nPcl;
} PC_NONSIGNAL_REQ_T, *LPPC_NONSIGNAL_REQ_T;
// struct for l1 to send confirm to diag(pc tool)
typedef struct _tagPC_NONSIGNAL_CNF_T
{
unsigned short nResult; // L1_RXTXLOOP_RESULT_E
unsigned short nRxLevel;
unsigned short nRxQual;
unsigned short nDummy0;
} PC_NONSIGNAL_CNF_T, *LPPC_NONSIGNAL_CNF_T;
//////////////////////////////////////////////////////////////////////////
// TD
#define TD_MAX_DATA_SIZE 0xC00
typedef enum _TD_NV_TYPE_E
{
TD_NV_TYPE_AFC, // AFC param, len = 1
TD_NV_TYPE_AGC_WORD, // AGC WORD param, len = 142
TD_NV_TYPE_AGC_CTRL_WORD, // AGC CTRL WORD param, len = 142
TD_NV_TYPE_PWR_STEP_FACTOR, // APC param, len = 90
TD_NV_TYPE_AGC_COMPENSATION, // AGC compensation table
TD_NV_TYPE_APC_COMPENSATION, // APC compensation table
TD_NV_TYPE_COMPENSATION_PARA, // change AGC or APC compensation para seperately
TD_NV_TYPE_ADC_PARA
} TD_NV_TYPE_E;
typedef struct _tagPC_TD_CAL_PARAM_T
{
TD_NV_TYPE_E eNvType; // data type
unsigned short nDataNum; // data len
unsigned short nData[TD_MAX_DATA_SIZE]; // data
} PC_TD_CAL_PARAM_T, *LPPC_TD_CAL_PARAM_T;
typedef struct _tagPC_TD_TX_SET_T
{
PC_CALI_MS_BAND_E eBand;
unsigned short nPwrLevel; // Power Control Level
unsigned short nFactor; // the apc factor
unsigned int nFreq; // the index
unsigned short nMode;
unsigned short nTxNumber; //
unsigned short nFactorStep; //
unsigned short nSlotCount;
unsigned short nTrigLevel;
} PC_TD_TX_SET_T, *LPPC_TD_TX_SET_T;
#define MAX_FACTOR_NUMBER 8
typedef struct _tagFACTOR_TX_T
{
unsigned short nFactor;
unsigned short nTxNumber; // 表示连续发送的点数
} FACTOR_TX_T;
typedef struct _tagPC_TD_TX_SWEEP_T
{
DWORD dwFreq; // directly use freq
unsigned short nFactorStep; // 表示发送功率的步径
unsigned short nTriggerLevel;
unsigned short nFactorNumber;
FACTOR_TX_T FactorArr[MAX_FACTOR_NUMBER]; // actual max number is 3
} PC_TD_TX_SWEEP_T, *LPPC_TD_TX_SWEEP_T;
// TD Nonsignal Command
typedef enum
{
CMD_RXTXLOOP_TDNULL,
CMD_RXTXLOOP_UPDATE_TDRF_PARAM_DSP,
CMD_RXTXLOOP_TDINITIATE,
CMD_RXTXLOOP_TDSTARTLOOP,
CMD_RXTXLOOP_TDSTOPLOOP,
CMD_RXTXLOOP_TDCHANGE_ARFCN,
CMD_RXTXLOOP_TDMODE_CHANGE,
CMD_RXTXLOOP_TDMAX
} TD_NONSIGNAL_COMMAND_E;
typedef enum
{
TDCC1_1,
TDCC2_1,
TDCC2_2,
TDCC4_1,
TDCC4_2,
TDCC4_3,
TDCC4_4,
TDCC8_1,
TDCC8_2,
TDCC8_3,
TDCC8_4,
TDCC8_5,
TDCC8_6,
TDCC8_7,
TDCC8_8,
TDCC16_1,
TDCC16_2,
TDCC16_3,
TDCC16_4,
TDCC16_5,
TDCC16_6,
TDCC16_7,
TDCC16_8,
TDCC16_9,
TDCC16_10,
TDCC16_11,
TDCC16_12,
TDCC16_13,
TDCC16_14,
TDCC16_15,
TDCC16_16,
TDCHANN_CODE_MAX
} TD_CHAN_CODE_E;
typedef struct _tagPC_TD_NONSIGNAL_REQ_T
{
TD_CHAN_CODE_E ul_chan_code[16];
TD_CHAN_CODE_E dl_chan_code[16];
unsigned short arfcn;
unsigned short cell_param_id;
unsigned short ul_slot ;
unsigned short ul_midamble_alloc_mode;
unsigned short ul_midamble;
unsigned short ul_midamble_shift ;
unsigned short ul_kcell ;
unsigned short dl_slot ;
unsigned short dl_midamble_alloc_mode;
unsigned short dl_midamble;
unsigned short dl_midamble_shift ;
unsigned short dl_kcell ;
char prx_up_dpch_des;
unsigned char pccpch_tx_power;
unsigned char ul_chan_code_num;
unsigned char dl_chan_code_num;
unsigned short reserved[7];
} PC_TD_NONSIGNAL_REQ_T,*LPPC_TD_NONSIGNAL_REQ_T;
// TD Fast Device Tune (FDT)
#define MAX_CHANNEL_NUM 13
#define MAX_FDT_RX_REPEAT_NUM 5
#define MAX_FDT_AGC_RESULT_NUM ((MAX_CHANNEL_NUM) * (MAX_FDT_RX_REPEAT_NUM) * (10)) // from zhongping
typedef enum _SYN_FLAG_E
{
SYN_TS0 =1, //仅ts0同步
SYN_DWPTS, //仅dwpts同步
SYN_TS0_DWPTS, //ts0和dwpts均需要同步
}SYN_FLAG_E;
typedef struct _PC_ARR_TX_T
{
unsigned short nStartFactor; //起始控制字
BYTE nFram; //此频点下APC总共需要发射的控制字数目
BYTE cal_apc_step; //控制字步进
}PC_ARR_TX_T,*pPC_ARR_TX_T;
#define MAX_MODE_NUMBER 4
typedef struct _ARFCN_T
{
unsigned short nArfcn; //频点
unsigned short nApcArrNum; //增益模式个数
PC_ARR_TX_T ApcTxArr[MAX_MODE_NUMBER];
}ARFCN_T,*pARFCN_T;
typedef struct _PC_FDT_TX_T
{
unsigned int nChanelNum; //校准频点总数目,不超过 MAX_CHANNEL_NUM
ARFCN_T Arfcn[MAX_CHANNEL_NUM];
}PC_FDT_TX_T,*pPC_FDT_TX_T;
typedef struct _PC_FDT_RX_T
{
unsigned short nStartGain; //起始接受Gain值
unsigned short nStep; //步进
unsigned short nRxGainNum; //此频点下需要接收的个数
unsigned short nRxRepeat; //每个Gain值重复接收次数
}PC_FDT_RX_T,*pPC_FDT_RX_T;
typedef struct _CALI_FDT_AGC_RESULT_T
{
unsigned short nArfcn;
short nRssi;
}CALI_FDT_AGC_RESULT_T,*pCALI_FDT_AGC_RESULT_T;
typedef struct _PC_TD_FDT_TXRX
{
SYN_FLAG_E eSysn;
unsigned short nafc_value; //afc频偏
unsigned short nafc_slop; //afc斜率
unsigned short nTrigNum; //trig帧数目
unsigned short nTxRxFlag;
PC_FDT_TX_T txFDTpara;
PC_FDT_RX_T rxFDTpara;
}PC_TD_FDT_TXRX,*pPC_TD_FDT_TXRX;
typedef struct _tagTDFDT_AGC_VALUE_CNF_T
{
unsigned nReultNum;
CALI_FDT_AGC_RESULT_T cali_FDT_AGC_result_arr[MAX_FDT_AGC_RESULT_NUM];
// ------------ End for TD ------------ ]]]
} TDFDT_AGC_VALUE_CNF_T, *LPTDFDT_AGC_VALUE_CNF_T;
//
typedef enum
{
CUSTOMER_DISK_FORMAT = 0,
CUSTOMER_FACTORY_RESET,
CUSTOMER_TCARD_CLEAR,
} CUSTOMER_PHONE_STATE_OPER;
//////////////////////////////////////////////////////////////////////////
// GSM Fast Device Tune (FDT)
#define MAX_USED_SLOT_COUNT 4
#define AGC_NSYNC_REP_COUNT 21
#define AGC_LSYNC_REP_COUNT 15