66 lines
2.3 KiB
C
66 lines
2.3 KiB
C
/****************************************************************************
|
|
* This file is part of the project AqHome.
|
|
* AqHome (c) by 2023 Martin Preuss, all rights reserved.
|
|
*
|
|
* The license for this file can be found in the file COPYING which you
|
|
* should have received along with this file.
|
|
****************************************************************************/
|
|
|
|
#ifndef AQH_HEXFILERECORD_H
|
|
#define AQH_HEXFILERECORD_H
|
|
|
|
|
|
#include <aqhome/api.h>
|
|
|
|
#include <gwenhywfar/list.h>
|
|
|
|
|
|
#define AQH_HEXFILERECORD_TYPE_DATA 0x00
|
|
#define AQH_HEXFILERECORD_TYPE_EOF 0x01
|
|
#define AQH_HEXFILERECORD_TYPE_EXTSEG 0x02
|
|
#define AQH_HEXFILERECORD_TYPE_STARTSEGADDR 0x03
|
|
#define AQH_HEXFILERECORD_TYPE_EXTLINEARADDR 0x04
|
|
#define AQH_HEXFILERECORD_TYPE_STARTLINEARADDR 0x05
|
|
|
|
|
|
|
|
typedef struct AQH_HEXFILERECORD AQH_HEXFILERECORD;
|
|
GWEN_LIST_FUNCTION_LIB_DEFS(AQH_HEXFILERECORD, AQH_HexfileRecord, AQHOME_API)
|
|
|
|
|
|
AQHOME_API AQH_HEXFILERECORD *AQH_HexfileRecord_new();
|
|
AQHOME_API void AQH_HexfileRecord_free(AQH_HEXFILERECORD *hr);
|
|
|
|
|
|
AQHOME_API uint8_t AQH_HexfileRecord_GetByteCount(const AQH_HEXFILERECORD *hr);
|
|
AQHOME_API void AQH_HexfileRecord_SetByteCount(AQH_HEXFILERECORD *hr, uint8_t b);
|
|
|
|
AQHOME_API uint16_t AQH_HexfileRecord_GetAddress(const AQH_HEXFILERECORD *hr);
|
|
AQHOME_API void AQH_HexfileRecord_SetAddress(AQH_HEXFILERECORD *hr, uint16_t a);
|
|
|
|
AQHOME_API uint8_t AQH_HexfileRecord_GetRecordType(const AQH_HEXFILERECORD *hr);
|
|
AQHOME_API void AQH_HexfileRecord_SetRecordType(AQH_HEXFILERECORD *hr, uint8_t t);
|
|
|
|
AQHOME_API const uint8_t *AQH_HexfileRecord_GetDataPointer(const AQH_HEXFILERECORD *hr);
|
|
AQHOME_API void AQH_HexfileRecord_SetDataPointer(AQH_HEXFILERECORD *hr, uint8_t *ptr);
|
|
|
|
AQHOME_API void AQH_HexfileRecord_SetData(AQH_HEXFILERECORD *hr, const uint8_t *ptr, uint8_t len);
|
|
|
|
|
|
/**
|
|
* Find the first record whose address is non-contiguous with the given record.
|
|
* This can be used to reduce the number of data records.
|
|
* This function stops at the next record whose address is non-continuous or whose type is not 00.
|
|
*
|
|
* @return next non-contiguous or non-data record (NULL if none)
|
|
* @param hr record to start with (i.e. whose successor are checked for continuity)
|
|
*/
|
|
AQHOME_API const AQH_HEXFILERECORD *AQH_HexfileRecord_List_FindNonAdjacentDataRecord(const AQH_HEXFILERECORD *hr);
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|