blob: df9c49018fc1a8ea8f5a41107192454bb66b187a [file] [log] [blame]
yu.dongc33b3072024-08-21 23:14:49 -07001/*****************************************************************************
2* Copyright Statement:
3* --------------------
4* This software is protected by Copyright and the information contained
5* herein is confidential. The software may not be copied and the information
6* contained herein may not be used or disclosed except with the written
7* permission of MediaTek Inc. (C) 2005
8*
9* BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
10* THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
11* RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
12* AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
13* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
14* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
15* NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
16* SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
17* SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
18* THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
19* NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
20* SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
21*
22* BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
23* LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
24* AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
25* OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
26* MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
27*
28* THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
29* WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
30* LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
31* RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
32* THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
33*
34*****************************************************************************/
35
36/*****************************************************************************
37 * Filename:
38 * ---------
39 * nvram_interface.h
40 *
41 * Project:
42 * --------
43 * MAUI
44 *
45 * Description:
46 * ------------
47 * These are interface functions of NVRAM module.
48 *
49 * Author:
50 * -------
51 * -------
52 *
53 *============================================================================
54 * HISTORY
55 * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
56 *------------------------------------------------------------------------------
57 * removed!
58 * removed!
59 * removed!
60 *
61 * removed!
62 * removed!
63 * removed!
64 * removed!
65 *
66 * removed!
67 * removed!
68 * removed!
69 * removed!
70 *
71 * removed!
72 * removed!
73 * removed!
74 * removed!
75 *
76 * removed!
77 * removed!
78 * removed!
79 * removed!
80 *
81 * removed!
82 * removed!
83 * removed!
84 * removed!
85 *
86 * removed!
87 * removed!
88 * removed!
89 *
90 * removed!
91 * removed!
92 * removed!
93 *
94 * removed!
95 * removed!
96 * removed!
97 *
98 * removed!
99 * removed!
100 * removed!
101 *
102 * removed!
103 * removed!
104 *
105 * removed!
106 * removed!
107 * removed!
108 *
109 * removed!
110 * removed!
111 *
112 * removed!
113 * removed!
114 * removed!
115 *
116 * removed!
117 * removed!
118 *
119 * removed!
120 * removed!
121 * removed!
122 *
123 * removed!
124 * removed!
125 * removed!
126 *
127 * removed!
128 * removed!
129 * removed!
130 * removed!
131 * removed!
132 * removed!
133 * removed!
134 * removed!
135 * removed!
136 * removed!
137 * removed!
138 * removed!
139 * removed!
140 * removed!
141 * removed!
142 *
143 * removed!
144 * removed!
145 * removed!
146 *
147 * removed!
148 * removed!
149 * removed!
150 *
151 * removed!
152 * removed!
153 * removed!
154 *
155 * removed!
156 * removed!
157 * removed!
158 *
159 * removed!
160 * removed!
161 * removed!
162 *
163 * removed!
164 * removed!
165 * removed!
166 *
167 * removed!
168 * removed!
169 * removed!
170 *
171 * removed!
172 * removed!
173 * removed!
174 *
175 * removed!
176 * removed!
177 * removed!
178 *
179 * removed!
180 * removed!
181 * removed!
182 *
183 * removed!
184 * removed!
185 * removed!
186 *
187 * removed!
188 * removed!
189 * removed!
190 *
191 * removed!
192 * removed!
193 * removed!
194 *
195 * removed!
196 * removed!
197 * removed!
198 *
199 * removed!
200 * removed!
201 * removed!
202 *
203 * removed!
204 * removed!
205 * removed!
206 *
207 * removed!
208 * removed!
209 *
210 *
211 * removed!
212 * removed!
213 *
214 *
215 * removed!
216 * removed!
217 *
218 *
219 * removed!
220 * removed!
221 *
222 *
223 * removed!
224 * removed!
225 *
226 *
227 * removed!
228 * removed!
229 *
230 *
231 * removed!
232 * removed!
233 *
234 *
235 * removed!
236 * removed!
237 *
238 *
239 * removed!
240 * removed!
241 *
242 *
243 * removed!
244 * removed!
245 *
246 *
247 * removed!
248 * removed!
249 *
250 *
251 * removed!
252 * removed!
253 *
254 *
255 * removed!
256 * removed!
257 *
258 *
259 * removed!
260 * removed!
261 *
262 *
263 * removed!
264 * removed!
265 *
266 *
267 * removed!
268 * removed!
269 *
270 *
271 * removed!
272 * removed!
273 * removed!
274 *
275 * removed!
276 * removed!
277 *
278 *
279 * removed!
280 * removed!
281 *
282 *
283 * removed!
284 * removed!
285 *
286 *
287 * removed!
288 * removed!
289 *
290 *
291 * removed!
292 * removed!
293 *
294 *
295 * removed!
296 * removed!
297 *
298 *
299 * removed!
300 * removed!
301 * removed!
302 *
303 * removed!
304 * removed!
305 * removed!
306 *
307 * removed!
308 * removed!
309 *
310 *
311 * removed!
312 * removed!
313 *
314 *
315 * removed!
316 * removed!
317 * removed!
318 *
319 * removed!
320 * removed!
321 * removed!
322 *
323 * removed!
324 * removed!
325 * removed!
326 *
327 * removed!
328 * removed!
329 * removed!
330 *
331 * removed!
332 * removed!
333 * removed!
334 *
335 * removed!
336 * removed!
337 * removed!
338 *
339 * removed!
340 * removed!
341 *
342 * removed!
343 * removed!
344 * removed!
345 * removed!
346 *
347 * removed!
348 * removed!
349 * removed!
350 *
351 * removed!
352 * removed!
353 * removed!
354 * removed!
355 *
356 * removed!
357 * removed!
358 *------------------------------------------------------------------------------
359 * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
360 *============================================================================
361 ****************************************************************************/
362#ifndef NVRAM_INTERFACE_H
363#define NVRAM_INTERFACE_H
364
365#ifdef __cplusplus
366extern "C"
367{
368#endif /* __cplusplus */
369
370#include "kal_general_types.h"
371#include "kal_public_defs.h"
372#include "nvram_enums.h"
373
374#include "nvram_defs.h"
375
376typedef struct
377{
378 kal_bool (*callback)(void *user_data);
379 void *user_data;
380 module_type module;
381 nvram_lid_enum file_id;
382 kal_bool processed;
383}nvram_read_callback_struct;
384
385typedef enum
386{
387 NVRAM_READ_TYPE_CHKSUM = 1,
388 NVRAM_READ_TYPE_CHKSUM_ONLY,
389 NVRAM_READ_TYPE_MAX
390}nvram_lid_read_type_enum;
391
392typedef struct
393{
394 kal_uint32 chksum_algo_type;
395 kal_uint32 chksum_algo_length;
396}nvram_lid_chksum_algo_info;
397
398#if defined(__MTK_TARGET__)
399#define nvram_read_callback_entry nvram_read_callback_struct __attribute__((section("_nvram_callback_tbl")))
400#else
401#ifdef _MSC_VER
402#define nvram_read_callback_entry __pragma(section("_nvram_callback_tbl_content")) \
403 nvram_read_callback_struct __declspec(allocate("_nvram_callback_tbl_content"))
404#else
405#define nvram_read_callback_entry nvram_read_callback_struct __attribute__((section("_nvram_callback_tbl_content")))
406#endif
407#endif
408
409/*****************************************************************************
410 * FUNCTION
411 * nvram_get_info
412 * DESCRIPTION
413 * This is nvram_get_info() function of NVRAM module.
414 * PARAMETERS
415 * LID: [IN] NVRAM LID
416 * total: [OUT] The record number of the LID
417 * size: [OUT] The record size of the LID
418 * RETURNS
419 * NVRAM_ERRNO_SUCCESS if succeed, NVRAM_ERRNO_INVALID otherwise (ie, invalid LID).
420 *****************************************************************************/
421extern nvram_errno_enum nvram_get_info(nvram_lid_enum LID, kal_uint16 *total, kal_uint16 *size);
422
423/*****************************************************************************
424 * FUNCTION
425 * nvram_write_exception
426 * DESCRIPTION
427 *
428 * PARAMETERS
429 * length: [IN] buffer length
430 * ex_data: [IN] ex_data
431 * ex_log: [IN] ex_log
432 * RETURNS
433 * void
434 *****************************************************************************/
435extern void nvram_write_exception(kal_uint16 length, long *ex_data, long *ex_log);
436
437/*****************************************************************************
438 * FUNCTION
439 * nvram_get_lid_num
440 * DESCRIPTION
441 * To get the total number of LID
442 * PARAMETERS
443 * void
444 * RETURNS
445 * nvram_ptr->ltable.total_LID
446 *****************************************************************************/
447extern nvram_lid_enum nvram_get_lid_num(void);
448
449/*****************************************************************************
450 * FUNCTION
451 * nvram_check_backup
452 * DESCRIPTION
453 * To tell given LID needs to backup or not
454 * PARAMETERS
455 * LID: [IN] LID of the file
456 * prefix: [IN] file prefix
457 * RETURNS
458 * NVRAM_IO_ERRNO_OK: need to backup
459 * NVRAM_IO_ERRNO_INVALID_LID: LID out of range or don't need to backup
460 *****************************************************************************/
461extern kal_uint8 nvram_check_backup(nvram_lid_enum LID, kal_char **prefix, kal_char **verno);
462
463/*****************************************************************************
464 * FUNCTION
465 * nvram_validate_file
466 * DESCRIPTION
467 * To validate integrity of the given file
468 * PARAMETERS
469 * LID: [IN] LID of the file
470 * path: [IN] path to validate
471 * RETURNS
472 * NVRAM_IO_ERRNO_OK: valid
473 * NVRAM_IO_ERRNO_INVALID_LID: LID out of range
474 * others: invalid
475 *****************************************************************************/
476extern nvram_errno_enum nvram_validate_file(nvram_lid_enum LID, kal_wchar *path);
477
478/*****************************************************************************
479 * FUNCTION
480 * nvram_shutdown_handler
481 * DESCRIPTION
482 * Disable all interrupts, change NVRAM state, change FS command mode, and flush
483 * PARAMETERS
484 * void
485 * RETURNS
486 * void
487 *****************************************************************************/
488void nvram_shutdown_handler(void);
489
490/*****************************************************************************
491 * FUNCTION
492 * nvram_test_lock
493 * DESCRIPTION
494 * get lock state from nvram context.
495 * PARAMETERS
496 * void
497 * RETURNS
498 * KAL_TRUE if locked, else KAL_FALSE
499 *****************************************************************************/
500extern kal_bool nvram_test_lock(void);
501
502#ifdef __NVRAM_DISK_SIZE_CHECK__
503/*****************************************************************************
504 * FUNCTION
505 * nvram_space_reserve
506 * DESCRIPTION
507 * get lock state from nvram context.
508 * PARAMETERS
509 * void
510 * RETURNS
511 * KAL_TRUE if locked, else KAL_FALSE
512 *****************************************************************************/
513extern void nvram_space_reserve(kal_uint32 *size_from_code);
514#endif
515
516/*****************************************************************************
517 * FUNCTION
518 * nvram_usb_read_data
519 * DESCRIPTION
520 * This function is used to get bmt calibration data ONLY when USB power on.
521 * PARAMETERS
522 * LID: [IN]
523 * buffer: [OUT]
524 * buffer_size: [IN]
525 * RETURNS
526 * NVRAM_ERRNO_SUCCESS if succeed, NVRAM_ERRNO_INVALID otherwise (ie, invalid LID).
527 *****************************************************************************/
528extern kal_bool nvram_usb_read_data(nvram_lid_enum LID, kal_uint8 *buffer, kal_uint32 buffer_size);
529
530/*****************************************************************************
531 * FUNCTION
532 * nvram_sec_port_is_enable
533 * DESCRIPTION
534 * To get TST port status
535 * PARAMETERS
536 * void
537 * RETURNS
538 * TST port Enable or Disable
539 *****************************************************************************/
540extern kal_bool nvram_sec_port_is_enable(void);
541
542/*****************************************************************************
543 * FUNCTION
544 * nvram_get_default_value
545 * DESCRIPTION
546 * This function is used to get default value for external modules.
547 * PARAMETERS
548 * LID: [IN]
549 * rec_index: [IN]
550 * p_buffer: [IN/OUT]
551 *
552 * RETURNS
553 * NVRAM_DEFAULT_VALUE_FAIL : get default value fail
554 * NVRAM_DEFAULT_VALUE_FF : p_buffer is invalid, default value is FF
555 * NVRAM_DEFAULT_VALUE_ZERO : p_buffer is invalid, default value is zero
556 * NVRAM_DEFAULT_VALUE_POINT: p_buffer is valid, use p_buffer to get default value
557 *****************************************************************************/
558extern nvram_default_value_enum nvram_get_default_value(nvram_lid_enum LID,
559 kal_uint16 rec_index,
560 kal_uint8 **p_buffer);
561
562/*****************************************************************************
563 * FUNCTION
564 * nvram_get_file_fullname
565 * DESCRIPTION
566 * To get the full name of nvram file.
567 * PARAMETERS
568 * folder_idx : [In] folder index
569 * nvramname : [In] nvram name
570 * filename : [Out] full file path
571 * RETURNS
572 * index of folder.
573 *****************************************************************************/
574extern kal_wchar * nvram_get_file_fullname(kal_uint8 folder_idx,
575 kal_char *nvramname,
576 kal_wchar *filename);
577
578/*****************************************************************************
579 * FUNCTION
580 * nvram_get_folder_idx
581 * DESCRIPTION
582 * To get the index of nvram folder.
583 * PARAMETERS
584 * LID: [IN] NVRAM LID
585 * RETURNS
586 * index of folder.
587 *****************************************************************************/
588extern kal_uint8 nvram_get_folder_idx(nvram_lid_enum LID);
589
590/*****************************************************************************
591 * FUNCTION
592 * nvram_get_work_path
593 * DESCRIPTION
594 * To get NVRAM working directory.
595 * PARAMETERS
596 * folder_idx : [IN] Which folder
597 * RETURNS
598 * NVRAM working directory.
599 *****************************************************************************/
600extern kal_char *nvram_get_work_path(kal_uint8 folder_idx);
601
602/*****************************************************************************
603 * FUNCTION
604 * nvram_get_folder_total_amount
605 * DESCRIPTION
606 * To get the full name of nvram file.
607 * PARAMETERS
608 * void
609 * RETURNS
610 * number of folders
611 *****************************************************************************/
612extern kal_uint8 nvram_get_folder_total_amount(void);
613
614#ifdef __NVRAM_READ_RESERVED_FILE__
615/*****************************************************************************
616 * FUNCTION
617 * nvram_external_search_reserved_lid
618 * DESCRIPTION
619 * This function is used to read reserved data items for external modules.
620 * Please must check with NVRAM owner before you use this API.
621 * PARAMETERS
622 * LID: [IN] NVRAM LID
623 * verno: [IN] Reserved LID VERNO. exp."001"
624 * total_records: [IN] Reserved LID record. set 0 for any one.
625 * size: [IN] Reserved LID size. set 0 for any one.
626 * RETURNS
627 * a boolean value
628 * RETURN VALUES
629 * KAL_FALSE: Fail. No match reserved files.
630 * KAL_TRUE: Success. create info to NVRAM_EF_READ_RESERVED_LID
631 *****************************************************************************/
632extern kal_bool nvram_external_search_reserved_lid(nvram_lid_enum LID, kal_char *verno, kal_uint16 total_records, kal_uint16 size);
633#endif
634
635/*****************************************************************************
636 * FUNCTION
637 * nvram_external_read_multi_record
638 * DESCRIPTION
639 * This function is used to get data items for external modules.
640 * PARAMETERS
641 * LID [IN]
642 * rec_index [IN]
643 * rec_amount [IN]
644 * buffer [?]
645 * buffer_size [IN]
646 * .(?)
647 * RETURNS
648 * NVRAM_ERRNO_SUCCESS if succeed, NVRAM_ERRNO_INVALID otherwise (ie, invalid LID).
649 *****************************************************************************/
650extern kal_bool nvram_external_read_multi_record(nvram_lid_enum LID, kal_uint16 rec_index, kal_uint16 rec_amount, kal_uint8 *buffer, kal_uint32 buffer_size);
651
652/*****************************************************************************
653 * FUNCTION
654 * nvram_external_read_data
655 * DESCRIPTION
656 * This function is used to read data items for external modules.
657 * Please must check with NVRAM owner before you use this API.
658 * PARAMETERS
659 * LID: [IN] NVRAM LID
660 * rec_index: [IN] record index
661 * buffer: [OUT] buffer pointer
662 * buffer_size: [IN] buffer size
663 * RETURNS
664 * a boolean value
665 * RETURN VALUES
666 * KAL_FALSE: fail
667 * KAL_TRUE: success
668 *****************************************************************************/
669extern kal_bool nvram_external_read_data(nvram_lid_enum LID, kal_uint16 rec_index, kal_uint8 *buffer, kal_uint32 buffer_size);
670
671/*****************************************************************************
672 * FUNCTION
673 * nvram_external_read_raw_data
674 * DESCRIPTION
675 * This function is used to get data items for external modules.
676 * PARAMETERS
677 * LID [IN]
678 * offset [IN]
679 * buffer [OUT]
680 * buffer_size [IN]
681 * .(?)
682 * RETURNS
683 * NVRAM_ERRNO_SUCCESS if succeed, NVRAM_ERRNO_INVALID otherwise (ie, invalid LID).
684 *****************************************************************************/
685extern kal_bool nvram_external_read_raw_data(nvram_lid_enum LID, kal_uint32 offset, kal_uint8 *buffer, kal_uint32 buffer_size);
686
687/*****************************************************************************
688 * FUNCTION
689 * nvram_external_secure_read_data
690 * DESCRIPTION
691 * This function is used to get data items for external modules with secure check.
692 * PARAMETERS
693 * LID: [IN] NVRAM LID
694 * rec_index: [IN] record index
695 * buffer: [OUT] buffer pointer
696 * buffer_size: [IN] buffer size
697 * RETURNS
698 * NVRAM_ERRNO_SUCCESS if succeed, NVRAM_ERRNO_INVALID otherwise (ie, invalid LID).
699 *****************************************************************************/
700extern nvram_errno_enum nvram_external_secure_read_data(nvram_lid_enum LID, kal_uint16 rec_index, kal_uint8 *buffer, kal_uint32 buffer_size, void* reserved_ptr);
701
702/*****************************************************************************
703 * FUNCTION
704 * nvram_external_get_lid_chksum_algo_info
705 * DESCRIPTION
706 * This function is used to get LID checksum algorithm information for external modules.
707 * PARAMETERS
708 * LID: [IN] NVRAM LID
709 * lid_chksum_algo_info: [OUT] LID checksum algorithm information structure pointer
710 * RETURNS
711 * NVRAM_ERRNO_SUCCESS if succeed, NVRAM_ERRNO_INVALID otherwise (ie, invalid LID).
712 *****************************************************************************/
713extern nvram_errno_enum nvram_external_get_lid_chksum_algo_info(nvram_lid_enum LID, nvram_lid_chksum_algo_info* lid_chksum_algo_info);
714
715/*****************************************************************************
716 * FUNCTION
717 * nvram_external_read_chksum_value
718 * DESCRIPTION
719 * This function is used to read the checksum of data item for external module.
720 * Please must check with NVRAM owner before you use this API.
721 * PARAMETERS
722 * LID: [IN] NVRAM LID
723 * rec_index: [IN] record index
724 * rec_amount: [IN] read how many record
725 * buffer: [OUT] buffer pointer
726 * buffer_size: [IN] buffer size
727 * read_chksum_type: [IN] read checksum type
728 * RETURNS
729 * NVRAM_ERRNO_SUCCESS if succeed, NVRAM_ERRNO_INVALID otherwise (ie, invalid LID).
730 *****************************************************************************/
731extern nvram_errno_enum nvram_external_read_chksum_value(nvram_lid_enum LID, kal_uint16 rec_index, kal_uint16 rec_amount, kal_uint8 *buffer, kal_uint32 buffer_size, nvram_lid_read_type_enum read_chksum_type);
732
733/*****************************************************************************
734 * FUNCTION
735 * nvram_external_read_chksum
736 * DESCRIPTION
737 * This function is used to read the checksum of data item for external module.
738 * Please must check with NVRAM owner before you use this API.
739 * PARAMETERS
740 * LID: [IN] NVRAM LID
741 * rec_index: [IN] record index
742 * rec_amount: [IN] read how many record
743 * buffer: [OUT] buffer pointer
744 * buffer_size: [IN] buffer size
745 * RETURNS
746 * a boolean value
747 * RETURN VALUES
748 * KAL_FALSE: fail
749 * KAL_TRUE: success
750 *****************************************************************************/
751extern kal_bool nvram_external_read_chksum(nvram_lid_enum LID, kal_uint16 rec_index, kal_uint16 rec_amount, kal_uint8 *buffer, kal_uint32 buffer_size);
752
753/*****************************************************************************
754 * FUNCTION
755 * nvram_external_read_chksum_only
756 * DESCRIPTION
757 * This function is used to read the checksum of data item for external module.
758 * This function do not verify current checksum, and just return last written checksum.
759 * If data item is encrypted, this function as same as nvram_external_secure_read_data().
760 * Please must check with NVRAM owner before you use this API.
761 * PARAMETERS
762 * LID: [IN] NVRAM LID
763 * rec_index: [IN] record index
764 * rec_amount: [IN] read how many record
765 * buffer: [OUT] buffer pointer
766 * buffer_size: [IN] buffer size
767 * RETURNS
768 * a boolean value
769 * RETURN VALUES
770 * KAL_FALSE: fail
771 * KAL_TRUE: success
772 *****************************************************************************/
773extern kal_bool nvram_external_read_chksum_only(nvram_lid_enum LID, kal_uint16 rec_index, kal_uint16 rec_amount, kal_uint8 *buffer, kal_uint32 buffer_size);
774
775/*****************************************************************************
776 * FUNCTION
777 * nvram_external_read_chksum_8b
778 * DESCRIPTION
779 * This function is used to read the checksum of data item for external module.
780 * Please must check with NVRAM owner before you use this API.
781 * PARAMETERS
782 * LID: [IN] NVRAM LID
783 * rec_index: [IN] record index
784 * rec_amount: [IN] read how many record
785 * buffer: [OUT] buffer pointer
786 * buffer_size: [IN] buffer size
787 * RETURNS
788 * a boolean value
789 * RETURN VALUES
790 * KAL_FALSE: fail
791 * KAL_TRUE: success
792 *****************************************************************************/
793extern kal_bool nvram_external_read_chksum_8b(nvram_lid_enum LID, kal_uint16 rec_index, kal_uint16 rec_amount, kal_uint8 *buffer, kal_uint32 buffer_size);
794
795/*****************************************************************************
796 * FUNCTION
797 * nvram_external_read_chksum_only_8b
798 * DESCRIPTION
799 * This function is used to read the checksum of data item for external module.
800 * This function do not verify current checksum, and just return last written checksum.
801 * If data item is encrypted, this function as same as nvram_external_secure_read_data().
802 * Please must check with NVRAM owner before you use this API.
803 * PARAMETERS
804 * LID: [IN] NVRAM LID
805 * rec_index: [IN] record index
806 * rec_amount: [IN] read how many record
807 * buffer: [OUT] buffer pointer
808 * buffer_size: [IN] buffer size
809 * RETURNS
810 * a boolean value
811 * RETURN VALUES
812 * KAL_FALSE: fail
813 * KAL_TRUE: success
814 *****************************************************************************/
815extern kal_bool nvram_external_read_chksum_only_8b(nvram_lid_enum LID, kal_uint16 rec_index, kal_uint16 rec_amount, kal_uint8 *buffer, kal_uint32 buffer_size);
816
817
818/*****************************************************************************
819 * FUNCTION
820 * nvram_external_write_data
821 * DESCRIPTION
822 * This function is used to write data items for external modules.
823 * Please must check with NVRAM owner before you use this API.
824 * PARAMETERS
825 * LID: [IN] NVRAM LID
826 * rec_index: [IN] record index
827 * buffer: [IN] buffer pointer
828 * buffer_size: [IN] buffer size
829 * RETURNS
830 * a boolean value
831 * RETURN VALUES
832 * KAL_FALSE: fail
833 * KAL_TRUE: success
834 *****************************************************************************/
835extern kal_bool nvram_external_write_data(nvram_lid_enum LID, kal_uint16 rec_index, kal_uint8 *buffer, kal_uint32 buffer_size);
836
837/*****************************************************************************
838 * FUNCTION
839 * nvram_external_write_raw_data
840 * DESCRIPTION
841 * This function is used to write data items for external modules.
842 * Please must check with NVRAM owner before you use this API.
843 * PARAMETERS
844 * LID [IN]
845 * offset [IN]
846 * buffer [IN]
847 * buffer_size [IN]
848 * .(?)
849 * RETURNS
850 * NVRAM_ERRNO_SUCCESS if succeed, NVRAM_ERRNO_INVALID otherwise (ie, invalid LID).
851 *****************************************************************************/
852extern kal_bool nvram_external_write_raw_data(nvram_lid_enum LID, kal_uint32 offset, kal_uint8 *buffer, kal_uint32 buffer_size);
853
854/*****************************************************************************
855 * FUNCTION
856 * nvram_external_secure_write_data
857 * DESCRIPTION
858 * This function is used to write data items for external modules with secure check.
859 * PARAMETERS
860 * LID: [IN] NVRAM LID
861 * rec_index: [IN] record index
862 * buffer: [IN] buffer pointer
863 * buffer_size: [IN] buffer size
864 * RETURNS
865 * NVRAM_ERRNO_SUCCESS if succeed, NVRAM_ERRNO_INVALID otherwise (ie, invalid LID).
866 *****************************************************************************/
867extern nvram_errno_enum nvram_external_secure_write_data(nvram_lid_enum LID, kal_uint16 rec_index, kal_uint8 *buffer, kal_uint32 buffer_size, void* reserved_ptr);
868
869/*****************************************************************************
870 * FUNCTION
871 * nvram_external_reset_data
872 * DESCRIPTION
873 * This function is used to reset data items for external modules.
874 * Please must check with NVRAM owner before you use this API.
875 * PARAMETERS
876 * LID: [IN] NVRAM LID
877 * rec_index: [IN] record index
878 * buffer: [IN] buffer pointer
879 * RETURNS
880 * a boolean value
881 * RETURN VALUES
882 * KAL_FALSE: fail
883 * KAL_TRUE: success
884 *****************************************************************************/
885kal_bool nvram_external_reset_data(nvram_lid_enum LID, kal_uint16 rec_index, kal_uint16 rec_amount);
886
887/*****************************************************************************
888 * FUNCTION
889 * nvram_check_hidden_files
890 * DESCRIPTION
891 * Check if the files or folder is hidden or not in Meta FAT Editor.
892 * 1. Any LID with NVRAM_CATEGORY_IMPORTANT will not appear in meta FAT Editor. ex: IMEI and SML
893 * 2. Important Folder will not appear in meta FAT Editor.
894 * 3. Customer sensitive data.
895 * Exception 1: During backup/restore, we can see IMEI and SML
896 * Exception 2: When NVRAM is locked. All the files and folder are hidden.
897 *
898 * PARAMETERS
899 * filename: [IN] the filename
900 * backup: [IN] During backup/restore the hidden file is different from normal
901 * Please set this as true during backup/restore
902 * RETURNS
903 * a boolean value
904 * RETURN VALUES
905 * KAL_TRUE: hidden
906 * KAL_FALSE: not hidden
907 *****************************************************************************/
908 extern kal_bool nvram_check_hidden_file(const kal_wchar* filename, kal_bool backup);
909
910
911/*****************************************************************************
912 * FUNCTION
913 * nvram_get_imei_type
914 * DESCRIPTION
915 * To get storage type of IMEI
916 * PARAMETERS
917 * void
918 * RETURNS
919 * NVRAM_STORAGE_TYPE_FAT: store in FAT
920 * NVRAM_STORAGE_TYPE_OTP: store in OTP
921 * NVRAM_STORAGE_TYPE_SECRO: store in secure RO
922 *****************************************************************************/
923extern kal_uint8 nvram_get_imei_type(void);
924
925/*****************************************************************************
926 * FUNCTION
927 * nvram_get_imei_value
928 * DESCRIPTION
929 * To get the IMEI value via blocking function
930 * PARAMETERS
931 * length: [IN] Length of imei_buf, in byte, at least 8 bytes.
932 * imei_buf: [OUT] buffer to fill in IMEI
933 * rec_index: [IN] Can be 1 or 2 to access both IMEI on dual sim project.
934 * It should be 1 on single sim project.
935 * RETURNS
936 * KAL_TRUE: SUCCESS
937 * KAL_FALSE: FAIL
938 *****************************************************************************/
939extern kal_bool nvram_get_imei_value(kal_uint8 length, kal_uint8 *imei_buf, kal_uint16 rec_index);
940
941/*****************************************************************************
942 * FUNCTION
943 * nvram_get_imei_record_num
944 * DESCRIPTION
945 * To get the record number of imei
946 * PARAMETERS
947 * void
948 * RETURNS
949 * number of imei record number
950 *****************************************************************************/
951extern kal_uint16 nvram_get_imei_record_num(void);
952
953/*****************************************************************************
954 * FUNCTION
955 * nvram_is_imei_unset
956 * DESCRIPTION
957 * To tell if the IMEI equals to its default value.
958 * PARAMETERS
959 * rec_index: [IN] the index of record
960 * RETURNS
961 * KAL_TRUE: unset
962 * KAL_FALSE: set
963 *****************************************************************************/
964extern kal_bool nvram_is_imei_unset(kal_uint16 rec_index);
965
966/*****************************************************************************
967 * FUNCTION
968 * nvram_secure_write_imei
969 * DESCRIPTION
970 * This function is used to write imei data items with secure check.
971 * PARAMETERS
972 * length: [IN] Length of imei_buf, in byte, at least 8 bytes.
973 * imei_buf: [IN] IMEI buffer
974 * rec_index: [IN] the index of record
975 * RETURNS
976 * KAL_TRUE: write success
977 * KAL_FALSE: write fail
978 *****************************************************************************/
979extern kal_bool nvram_secure_write_imei(kal_uint8 length, kal_uint8 *imei_buf, kal_uint16 rec_index, void* reserved_ptr);
980
981/*****************************************************************************
982 * FUNCTION
983 * nvram_compare_to_default_value
984 * DESCRIPTION
985 * This function is used to compare the value in nvram file to default value
986 * PARAMETERS
987 * LID: [IN] NVRAM LID
988 * rec_index: [IN] record index, start from 1, but if the value is 0,
989 * this function will compare all record to default value
990 * RETURNS
991 * nvram_errno_enum
992 * RETURN VALUES
993 * NVRAM_ERRNO_SUCCESS: no error
994 * NVRAM_ERRNO_FAIL: at least one record is different to default value
995 *****************************************************************************/
996extern kal_int32 nvram_compare_to_default_value(nvram_lid_enum LID, kal_uint16 rec_index);
997
998
999
1000extern kal_uint8 *nvram_get_custpack_version(void);
1001/*****************************************************************************
1002 * FUNCTION
1003 * nvram_set_restore_factory_flag
1004 * DESCRIPTION
1005 * PARAMETERS
1006 * RETURNS
1007 *****************************************************************************/
1008extern kal_bool nvram_set_restore_factory_flag(nvram_restore_flag_enum restore_flag);
1009
1010/*****************************************************************************
1011 * FUNCTION
1012 * nvram_check_restore_factory_flag
1013 * DESCRIPTION
1014 * PARAMETERS
1015 * RETURNS
1016 *****************************************************************************/
1017extern kal_bool nvram_check_restore_factory_flag(void);
1018
1019/*****************************************************************************
1020 * FUNCTION
1021 * nvram_ltable_register
1022 * DESCRIPTION
1023 * PARAMETERS
1024 * RETURNS
1025 *****************************************************************************/
1026extern void nvram_ltable_register(nvram_ltable_entry_struct *table);
1027
1028/*****************************************************************************
1029 * FUNCTION
1030 * nvram_register_read_req
1031 * DESCRIPTION
1032 * PARAMETERS
1033 * RETURNS
1034 *****************************************************************************/
1035extern kal_bool nvram_register_read_req(nvram_read_callback_struct *entry);
1036
1037/*****************************************************************************
1038 * FUNCTION
1039 * nvram_external_get_lid_info
1040 * DESCRIPTION
1041 * This function is used to get the LID info
1042 * PARAMETERS
1043 * LID: [IN] NVRAM LID
1044 * ldi: [OUT] LID info buffer pointer,store the LID info
1045 * RETURNS
1046 * nvram_errno_enum
1047 * RETURN VALUES
1048 * NVRAM_ERRNO_SUCCESS: no error
1049 * NVRAM_IO_ERRNO_INVALID_LID: invalid LID
1050 * NVRAM_ERRNO_INVALID: lid pointer is NULL
1051 *****************************************************************************/
1052extern nvram_errno_enum nvram_external_get_lid_info(nvram_lid_enum LID,nvram_ltable_entry_struct *ldi);
1053
1054/*****************************************************************************
1055 * FUNCTION
1056 * nvram_debug_info_init
1057 * DESCRIPTION
1058 * This function is used to get the share memory to store the debug info
1059 * PARAMETERS
1060 * share_mem: [OUT] the memory address of MD CCCI debug info
1061 * length: [OUT] the length of MD CCCI debug info
1062 * RETURNS
1063 * nvram_errno_enum
1064 * RETURN VALUES
1065 * KAL_TRUE: get the share memory success
1066 * KAL_FALSE: fail to get the share memory
1067 *****************************************************************************/
1068extern kal_bool nvram_debug_info_init(kal_uint32 **share_mem,kal_uint32 *length);
1069
1070
1071/*****************************************************************************
1072 * for FT task to get all nvram data items
1073*****************************************************************************/
1074extern kal_bool nvram_util_next_data_item(nvram_ltable_entry_struct **entry);
1075extern kal_bool nvram_util_get_data_item(nvram_ltable_entry_struct **ldi, nvram_lid_enum LID);
1076extern kal_bool nvram_util_get_data_item_by_fileprefix(nvram_ltable_entry_struct **ldi, kal_char *fileprefix);
1077
1078#ifdef __cplusplus
1079}
1080#endif
1081
1082#endif /* NVRAM_INTERFACE_H */
1083