#include "../ademco_hb/ademco_hb.h"
#include <stdio.h>
#include <string.h>
#include <assert.h>

#ifdef _WIN64
#ifdef _DEBUG
#pragma comment(lib, "../x64/Debug/ademco_hbd.lib")
#else
#pragma comment(lib, "../x64/Release/ademco_hb.lib")
#endif
#else // WIN32
#ifdef _DEBUG
#pragma comment(lib, "../Win32/Debug/ademco_hbd.lib")
#else
#pragma comment(lib, "../Win32/Release/ademco_hb.lib")
#endif
#endif

int main()
{
	int cb_commited = 0;

	// 解析完整数据包
	{
		char raw[] = "\nC5C30053\"HENG-BO\"0000R000000L000000#90219125916578[#000000|1737 00 000]_09:11:19,08-05-2019\r";
		int res = parse(raw, strlen(raw), &cb_commited);
		assert(res == 0);
	}

	// 解析长度不足的数据包
	{
		char raw_not_enough[] = "\nC5C30053\"HENG-BO\"0000R000000L000000";
		int res = parse(raw_not_enough, strlen(raw_not_enough), &cb_commited);
		assert(res == 1);
	}

	// 解析到错误数据包
	{
		char raw_error[] = "abcdeadfasdfasdfasd";
		int res = parse(raw_error, strlen(raw_error), &cb_commited);
		assert(res == 2);
	}

	// 打包示例
	{
		char buff[1024];
		// 对安定宝ID为666666的主机进行撤防
		int res = pack(buff, sizeof(buff), 1, 666666, 1400, 0, 0);
		assert(res > 0);
		//res = parse(buff, res, &cb_commited);
		//assert(res == 0);
	}

	// ACK 示例
	{
		char buff[1024];
		// 对安定宝ID为666666的主机回应ACK
		int res = pack_ack(buff, sizeof(buff), 1, 666666);
		assert(res > 0);
		//res = parse(buff, res, &cb_commited);
		//assert(res == 0);
	}
}