14fe996c2SAndrew Jeffery // SPDX-License-Identifier: Apache-2.0
24fe996c2SAndrew Jeffery // Copyright (C) 2018 IBM Corp.
3ccaec500SAndrew Jeffery 
4ccaec500SAndrew Jeffery #include <assert.h>
526558dbbSAndrew Jeffery #include <string.h>
6ccaec500SAndrew Jeffery 
726558dbbSAndrew Jeffery #include "mboxd.h"
8457a6e5fSAndrew Jeffery #include "transport_mbox.h"
9ccaec500SAndrew Jeffery 
10ccaec500SAndrew Jeffery #include "test/mbox.h"
11ccaec500SAndrew Jeffery #include "test/system.h"
12ccaec500SAndrew Jeffery 
13ccaec500SAndrew Jeffery static const uint8_t get_info[] = {
14ccaec500SAndrew Jeffery 	0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
15ccaec500SAndrew Jeffery 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
16ccaec500SAndrew Jeffery };
17ccaec500SAndrew Jeffery 
18ccaec500SAndrew Jeffery static const uint8_t create_write_window[] = {
19ccaec500SAndrew Jeffery 	0x06, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
20ccaec500SAndrew Jeffery 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
21ccaec500SAndrew Jeffery };
22ccaec500SAndrew Jeffery 
23ccaec500SAndrew Jeffery static const uint8_t response[] = {
24ccaec500SAndrew Jeffery 	0x06, 0x01, 0xfd, 0xff, 0x03, 0x00, 0x00, 0x00,
25ccaec500SAndrew Jeffery 	0x00, 0x00, 0x00, 0x00, 0x00, 0x01
26ccaec500SAndrew Jeffery };
27ccaec500SAndrew Jeffery 
28ccaec500SAndrew Jeffery uint8_t data[3] = { 0xaa, 0x55, 0xaa };
29ccaec500SAndrew Jeffery 
30ccaec500SAndrew Jeffery #define MEM_SIZE	sizeof(data)
31ccaec500SAndrew Jeffery #define ERASE_SIZE	1
32ccaec500SAndrew Jeffery #define N_WINDOWS	1
33ccaec500SAndrew Jeffery #define WINDOW_SIZE	sizeof(data)
34ccaec500SAndrew Jeffery 
main(void)35ccaec500SAndrew Jeffery int main(void)
36ccaec500SAndrew Jeffery {
37ccaec500SAndrew Jeffery 	struct mbox_context *ctx;
38ccaec500SAndrew Jeffery 	int rc;
39ccaec500SAndrew Jeffery 
40ccaec500SAndrew Jeffery 	system_set_reserved_size(MEM_SIZE);
41ccaec500SAndrew Jeffery 	system_set_mtd_sizes(MEM_SIZE, ERASE_SIZE);
42ccaec500SAndrew Jeffery 
43ccaec500SAndrew Jeffery 	ctx = mbox_create_test_context(N_WINDOWS, WINDOW_SIZE);
44ccaec500SAndrew Jeffery 	rc = mbox_set_mtd_data(ctx, data, sizeof(data));
45ccaec500SAndrew Jeffery 	assert(rc == 0);
46ccaec500SAndrew Jeffery 
47ccaec500SAndrew Jeffery 	rc = mbox_command_dispatch(ctx, get_info, sizeof(get_info));
48ccaec500SAndrew Jeffery 	assert(rc == 1);
49ccaec500SAndrew Jeffery 
50ccaec500SAndrew Jeffery 	rc = mbox_command_dispatch(ctx, create_write_window,
51ccaec500SAndrew Jeffery 			sizeof(create_write_window));
52ccaec500SAndrew Jeffery 	assert(rc == 1);
53ccaec500SAndrew Jeffery 
54ccaec500SAndrew Jeffery 	rc = mbox_cmp(ctx, response, sizeof(response));
55ccaec500SAndrew Jeffery 	assert(rc == 0);
56ccaec500SAndrew Jeffery 
57ccaec500SAndrew Jeffery 	rc = memcmp(ctx->mem, data, sizeof(data));
58ccaec500SAndrew Jeffery 	assert(rc == 0);
59ccaec500SAndrew Jeffery 
60ccaec500SAndrew Jeffery 	return rc;
61*68a24c9eSPatrick Williams }
62