Files
aqhomecontrol/aqhome/hexfile/hexfilerecord.h
2023-04-18 21:17:56 +02:00

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