diff options
author | Umang Jain <umang.jain@ideasonboard.com> | 2021-05-21 10:27:24 +0530 |
---|---|---|
committer | Umang Jain <umang.jain@ideasonboard.com> | 2021-06-28 14:12:06 +0530 |
commit | f21b9306a7893017b9f7e6b95001da9abade30f7 (patch) | |
tree | 82332eb640a9725ceef3ec487033b524cd49ecd7 /include/ia_imaging/ia_mkn_decoder.h | |
parent | d05fd744448d37739cf4f919578d0ac8c73bc0a1 (diff) |
include: Link to ia_imaging library and import headers
libia_imaging is provided by the ChromeOS system, however the headers
aren't installed at the system's $includedir locations. We need to carry
them in-tree, to be able to use them.
Signed-off-by: Umang Jain <umang.jain@ideasonboard.com>
Diffstat (limited to 'include/ia_imaging/ia_mkn_decoder.h')
-rw-r--r-- | include/ia_imaging/ia_mkn_decoder.h | 136 |
1 files changed, 136 insertions, 0 deletions
diff --git a/include/ia_imaging/ia_mkn_decoder.h b/include/ia_imaging/ia_mkn_decoder.h new file mode 100644 index 0000000..696e54b --- /dev/null +++ b/include/ia_imaging/ia_mkn_decoder.h @@ -0,0 +1,136 @@ +/* + * Copyright (C) 2015 - 2017 Intel Corporation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/*! + * \file ia_mkn_decoder.h + * \brief Definitions of functions to decode records from Maker Note. +*/ + +#ifndef IA_MKN_DECODER_H_ +#define IA_MKN_DECODER_H_ + +#include "ia_types.h" +#include "ia_mkn_types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/*! + * \brief Checks if makernote contents are valid. + * + * \param[in] a_mknt_data_ptr Mandatory.\n + * Pointer to the makernote (MKNT) binary data. + * \param[in] a_tag Mandatory.\n + * Tag which should match tag in the given data. Can be 0, if tag doesn't matter. + * \return True if makernote data is valid. + */ +LIBEXPORT bool +ia_mkn_is_valid(const ia_binary_data *a_mknt_data_ptr, + const unsigned int a_tag); + +/*! + * \brief Changes endianness of given makernote buffer. + * Modifies the makernote buffer by changing endianness of makernote header and records. + * + * \param[in, out] mknt_data Mandatory.\n + * Pointer to the makernote (MKNT) binary data which will be changed + * to different endianness. + * \return Error code. + */ +LIBEXPORT ia_err +ia_mkn_change_endianness(ia_binary_data *mknt_data); + +/*! + * \brief Prints all records contents. + * Prints all record headers and record contents into the stdout in the same format as defined by the DFID. If a buffer + * containing makernote header file is given as input, the DNID is also printed out as the first value on each row. + * Note. Makernote data CRC validity is not checked when printing records. Prior to calling this function, + * call ia_mkn_is_valid() to validate integrity of makernote data. + * + * \param[in] mknt_data Mandatory.\n + * Pointer to the makernote (MKNT) binary data. + * \param[in] makernote_header_file Optional.\n + * Buffer where makernote header file has been read. Can be NULL. + * \param[in] mkn_dnid_struct_name Optional.\n + * C string of name of structure containing DNIDs in the given header file. + * \param[in] dnid Mandatory.\n + * Record's DNID to print. If 0, all records will be printed out. + * \param[in] binary Mandatory.\n + * Flag indicating if data is printed out as binary data into stdout. + * \param[in] key Mandatory.\n + * Packing key (16 bytes). + * \return Error code. + */ +LIBEXPORT ia_err +ia_mkn_print_record(const ia_binary_data *mknt_data, + const char *makernote_header_file, + const char *mkn_dnid_struct_name, + ia_mkn_dnid dnid, + bool binary, + const char *key); + +/*! + * \brief Copies record data from the makernote to given buffer. + * Checks if a given record exists in the makernote and copies the data from the makernote buffer into the record data buffer. + * The amount to copy depends on size value given as input in the record header structure. If size is 0, + * only the record header is updated with correct data size and no data is copied. Thus this function can be called twice: + * First to get the record size and second time (after allocating a buffer for the output) to get the record data. When querying + * for record, DFID and DNID must match the record's DFID and DNID. + * Note. Makernote data CRC validity is not checked when getting records. Prior to calling this function, + * call ia_mkn_is_valid() to validate integrity of makernote data. + * + * \param[in] mknt_data Mandatory.\n + * Pointer to the makernote (MKNT) binary data. + * \param[in] key Mandatory.\n + * Packing key (16 bytes). + * \param[in,out] mkn_record_header Mandatory.\n + * Record header with size set to 0 or wanted data size from record. DFID and DNID + * must be set correctly to get record data. + * \param[out] record_data Mandatory if record header size is not 0.\n + * Large enough buffer to hold whole record data. + * \return Error code. + */ +LIBEXPORT ia_err +ia_mkn_get_record(const ia_binary_data *mknt_data, + const char* key, + ia_mkn_record_header *mkn_record_header, + void *record_data); + +/*! + * \brief Copies record data from the makernote to given buffer. + * Parses through the makernote file and copies record headers of the first num_mkn_records to the given memory array. + * Client should make sure enough memory is allocated for num_mkn_records in the given array. + * If mkn_record_headers is NULL, this function will return the number of records. Thus + * first call can be used to query how many records there are and second call to get the actual record headers. + * + * \param[in] mknt_data Mandatory.\n + * Pointer to the makernote (MKNT) binary data. + * \param[in,out] num_mkn_records Mandatory.\n + * Number of makernote records the function is allowed to parse and store to the mkn_record_headers. + * \param[in,out] mkn_record_headers Mandatory.\n + * Client allocated memory for storing the array of record headers parsed by this function. + * \return Error code. + */ +LIBEXPORT ia_err +ia_mkn_get_record_headers(const ia_binary_data *mknt_data, + int *num_mkn_records, + ia_mkn_record_header *mkn_record_headers); + +#ifdef __cplusplus +} +#endif +#endif /* IA_MKN_DECODER_H_ */ |