#ifndef _VENDOR_INTERFACE_H_
#define _VENDOR_INTERFACE_H_

#include "TZ_Vendor_Tui_tl.h"
#include <stdint.h>
#include <stdbool.h>
#include "TuiRotation.h"

#ifdef __cplusplus
extern "C" {
#endif

	uint32_t showPng(uint32_t x, uint32_t y, uint8_t *pngData, uint32_t length);
	uint32_t drawImage(uint32_t x, uint32_t y, uint8_t *pngData, uint32_t length);
	uint32_t showFrameBuffer(void);
	uint32_t getScreenInfo(uint32_t *width_out, uint32_t *height_out); // output params
	uint32_t getTuiEvent(uint32_t *x_out, uint32_t *y_out, uint32_t *type_out); // output params
	void registerTuiTouchCallback(uint32_t(*func)(uint32_t func_x, uint32_t func_y, uint32_t func_type));
	uint32_t startTuiSession(uint8_t* bgImage, uint32_t bgImageSize);
	uint32_t closeTuiSession(void);
	uint32_t getNotifyMask(uint32_t isNotify);
	uint32_t createTouchThread(uint32_t cmdId);
	bool isStartTuiWithBackground(void);

	void initPinpad(void);
	uint32_t processCmdPinpad(uint32_t cmd_id, tciMessage_t * sendmsg, uint32_t sendmsg_len, tciMessage_t * respmsg, uint32_t respmsg_len);
	uint32_t processTuiEvent(bool * tryAgain, bool check_cancel_event_only);
	uint32_t processTuiEvents(bool check_cancel_event_only);
	bool validateSoVersion(uint8_t* so);
	uint32_t wrapDataForBcCore(uint8_t * app_name, uint32_t app_name_len, uint8_t * data, uint32_t size, uint8_t * wrap_data, uint32_t * wrap_size);
	uint64_t getUptime(void);
	uint32_t getReturnCode(void);

#ifdef __cplusplus
}
#endif

#endif // _VENDOR_INTERFACE_H_
