14fe996c2SAndrew Jeffery // SPDX-License-Identifier: Apache-2.0
24fe996c2SAndrew Jeffery // Copyright (C) 2018 IBM Corp.
39d4b8883SAndrew Jeffery
49d4b8883SAndrew Jeffery #include <assert.h>
59d4b8883SAndrew Jeffery
6*26558dbbSAndrew Jeffery #include "mboxd.h"
7457a6e5fSAndrew Jeffery #include "transport_mbox.h"
89d4b8883SAndrew Jeffery
99d4b8883SAndrew Jeffery #include "test/mbox.h"
109d4b8883SAndrew Jeffery #include "test/system.h"
119d4b8883SAndrew Jeffery
129d4b8883SAndrew Jeffery static const uint8_t get_mbox_info[] = {
139d4b8883SAndrew Jeffery 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
149d4b8883SAndrew Jeffery 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
159d4b8883SAndrew Jeffery };
169d4b8883SAndrew Jeffery
179d4b8883SAndrew Jeffery static const uint8_t invalid[] = {
189d4b8883SAndrew Jeffery 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
199d4b8883SAndrew Jeffery 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
209d4b8883SAndrew Jeffery };
219d4b8883SAndrew Jeffery
229d4b8883SAndrew Jeffery static const uint8_t response[] = {
239d4b8883SAndrew Jeffery 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
249d4b8883SAndrew Jeffery 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
259d4b8883SAndrew Jeffery };
269d4b8883SAndrew Jeffery
279d4b8883SAndrew Jeffery #define MEM_SIZE 3
289d4b8883SAndrew Jeffery #define ERASE_SIZE 1
299d4b8883SAndrew Jeffery #define N_WINDOWS 1
309d4b8883SAndrew Jeffery #define WINDOW_SIZE 1
319d4b8883SAndrew Jeffery
invalid_uninitialised(struct mbox_context * ctx)329d4b8883SAndrew Jeffery int invalid_uninitialised(struct mbox_context *ctx)
339d4b8883SAndrew Jeffery {
349d4b8883SAndrew Jeffery int rc;
359d4b8883SAndrew Jeffery
369d4b8883SAndrew Jeffery rc = mbox_command_dispatch(ctx, invalid, sizeof(invalid));
379d4b8883SAndrew Jeffery assert(rc == 2);
389d4b8883SAndrew Jeffery
399d4b8883SAndrew Jeffery rc = mbox_cmp(ctx, response, sizeof(response));
409d4b8883SAndrew Jeffery assert(rc == 0);
419d4b8883SAndrew Jeffery
429d4b8883SAndrew Jeffery return rc;
439d4b8883SAndrew Jeffery }
449d4b8883SAndrew Jeffery
invalid_initialised(struct mbox_context * ctx)459d4b8883SAndrew Jeffery int invalid_initialised(struct mbox_context *ctx)
469d4b8883SAndrew Jeffery {
479d4b8883SAndrew Jeffery int rc;
489d4b8883SAndrew Jeffery
499d4b8883SAndrew Jeffery rc = mbox_command_dispatch(ctx, get_mbox_info, sizeof(get_mbox_info));
509d4b8883SAndrew Jeffery assert(rc == 1);
519d4b8883SAndrew Jeffery
529d4b8883SAndrew Jeffery rc = mbox_command_dispatch(ctx, invalid, sizeof(invalid));
539d4b8883SAndrew Jeffery assert(rc == 2);
549d4b8883SAndrew Jeffery
559d4b8883SAndrew Jeffery rc = mbox_cmp(ctx, response, sizeof(response));
569d4b8883SAndrew Jeffery assert(rc == 0);
579d4b8883SAndrew Jeffery
589d4b8883SAndrew Jeffery return rc;
599d4b8883SAndrew Jeffery }
609d4b8883SAndrew Jeffery
main(void)619d4b8883SAndrew Jeffery int main(void)
629d4b8883SAndrew Jeffery {
639d4b8883SAndrew Jeffery struct mbox_context *ctx;
649d4b8883SAndrew Jeffery
659d4b8883SAndrew Jeffery system_set_reserved_size(MEM_SIZE);
669d4b8883SAndrew Jeffery system_set_mtd_sizes(MEM_SIZE, ERASE_SIZE);
679d4b8883SAndrew Jeffery
689d4b8883SAndrew Jeffery ctx = mbox_create_test_context(N_WINDOWS, WINDOW_SIZE);
699d4b8883SAndrew Jeffery
709d4b8883SAndrew Jeffery invalid_uninitialised(ctx);
719d4b8883SAndrew Jeffery
729d4b8883SAndrew Jeffery invalid_initialised(ctx);
739d4b8883SAndrew Jeffery
749d4b8883SAndrew Jeffery return 0;
759d4b8883SAndrew Jeffery }
76