1*4fe996c2SAndrew Jeffery // SPDX-License-Identifier: Apache-2.0
2*4fe996c2SAndrew Jeffery // Copyright (C) 2018 IBM Corp.
3acdb4b3aSAndrew Jeffery 
4acdb4b3aSAndrew Jeffery #include <assert.h>
5acdb4b3aSAndrew Jeffery 
6acdb4b3aSAndrew Jeffery #include "mbox.h"
7acdb4b3aSAndrew Jeffery #include "mboxd_msg.h"
8acdb4b3aSAndrew Jeffery 
9acdb4b3aSAndrew Jeffery #include "test/mbox.h"
10acdb4b3aSAndrew Jeffery #include "test/system.h"
11acdb4b3aSAndrew Jeffery 
12acdb4b3aSAndrew Jeffery static const uint8_t get_info[] = {
13acdb4b3aSAndrew Jeffery 	0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
14acdb4b3aSAndrew Jeffery 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
15acdb4b3aSAndrew Jeffery };
16acdb4b3aSAndrew Jeffery 
17acdb4b3aSAndrew Jeffery static const uint8_t create_read_window[] = {
18acdb4b3aSAndrew Jeffery 	0x04, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
19acdb4b3aSAndrew Jeffery 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
20acdb4b3aSAndrew Jeffery };
21acdb4b3aSAndrew Jeffery 
22acdb4b3aSAndrew Jeffery static const uint8_t write_flush[] = {
23acdb4b3aSAndrew Jeffery 	0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
24acdb4b3aSAndrew Jeffery 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
25acdb4b3aSAndrew Jeffery };
26acdb4b3aSAndrew Jeffery 
27acdb4b3aSAndrew Jeffery static const uint8_t response[] = {
28acdb4b3aSAndrew Jeffery 	0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
29acdb4b3aSAndrew Jeffery 	0x00, 0x00, 0x00, 0x00, 0x00, 0x07
30acdb4b3aSAndrew Jeffery };
31acdb4b3aSAndrew Jeffery 
32acdb4b3aSAndrew Jeffery uint8_t data[3] = { 0xaa, 0x55, 0xaa };
33acdb4b3aSAndrew Jeffery 
34acdb4b3aSAndrew Jeffery #define MEM_SIZE	sizeof(data)
35acdb4b3aSAndrew Jeffery #define ERASE_SIZE	1
36acdb4b3aSAndrew Jeffery #define N_WINDOWS	1
37acdb4b3aSAndrew Jeffery #define WINDOW_SIZE	sizeof(data)
38acdb4b3aSAndrew Jeffery 
main(void)39acdb4b3aSAndrew Jeffery int main(void)
40acdb4b3aSAndrew Jeffery {
41acdb4b3aSAndrew Jeffery 	struct mbox_context *ctx;
42acdb4b3aSAndrew Jeffery 	int rc;
43acdb4b3aSAndrew Jeffery 
44acdb4b3aSAndrew Jeffery 	system_set_reserved_size(MEM_SIZE);
45acdb4b3aSAndrew Jeffery 	system_set_mtd_sizes(MEM_SIZE, ERASE_SIZE);
46acdb4b3aSAndrew Jeffery 
47acdb4b3aSAndrew Jeffery 	ctx = mbox_create_test_context(N_WINDOWS, WINDOW_SIZE);
48acdb4b3aSAndrew Jeffery 	rc = mbox_set_mtd_data(ctx, data, sizeof(data));
49acdb4b3aSAndrew Jeffery 	assert(rc == 0);
50acdb4b3aSAndrew Jeffery 
51acdb4b3aSAndrew Jeffery 	rc = mbox_command_dispatch(ctx, get_info, sizeof(get_info));
52acdb4b3aSAndrew Jeffery 	assert(rc == 1);
53acdb4b3aSAndrew Jeffery 
54acdb4b3aSAndrew Jeffery 	rc = mbox_command_dispatch(ctx, create_read_window,
55acdb4b3aSAndrew Jeffery 			sizeof(create_read_window));
56acdb4b3aSAndrew Jeffery 	assert(rc == 1);
57acdb4b3aSAndrew Jeffery 
58acdb4b3aSAndrew Jeffery 	rc = mbox_command_dispatch(ctx, write_flush, sizeof(write_flush));
59acdb4b3aSAndrew Jeffery 	assert(rc == 7);
60acdb4b3aSAndrew Jeffery 
61acdb4b3aSAndrew Jeffery 	rc = mbox_cmp(ctx, response, sizeof(response));
62acdb4b3aSAndrew Jeffery 	assert(rc == 0);
63acdb4b3aSAndrew Jeffery 
64acdb4b3aSAndrew Jeffery 	return rc;
65acdb4b3aSAndrew Jeffery };
66