/****************************************************************************
 * 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_SERIAL_H
#define AQH_SERIAL_H

#include <aqhome/api.h>

#include <gwenhywfar/buffer.h>

#include <inttypes.h>


#ifdef __cplusplus
extern "C" {
#endif


typedef struct AQH_SERIAL AQH_SERIAL;


AQHOME_API AQH_SERIAL *AQH_Serial_new(const char *deviceName, uint8_t addr);
AQHOME_API void AQH_Serial_free(AQH_SERIAL *sr);

AQHOME_API uint8_t AQH_Serial_GetAddress(const AQH_SERIAL *sr);


AQHOME_API int AQH_Serial_Open(AQH_SERIAL *sr);
AQHOME_API void AQH_Serial_Close(AQH_SERIAL *sr);

AQHOME_API int AQH_Serial_Recv(AQH_SERIAL *sr, uint8_t *buf, int len);
AQHOME_API int AQH_Serial_Send(AQH_SERIAL *sr, const uint8_t *ptr, uint8_t len);

AQHOME_API int AQH_Serial_SendPacket(AQH_SERIAL *sr, uint8_t destAddr, const uint8_t *ptr, uint8_t len);


#ifdef __cplusplus
}
#endif


#endif

