Software APIs
example_mem_ujcmd.c
1 // Copyright lowRISC contributors (OpenTitan project).
2 // Licensed under the Apache License, Version 2.0, see LICENSE for details.
3 // SPDX-License-Identifier: Apache-2.0
4 
5 #include "sw/device/lib/base/status.h"
7 #include "sw/device/lib/testing/json/command.h"
8 #include "sw/device/lib/testing/json/mem.h"
9 #include "sw/device/lib/testing/test_framework/check.h"
11 #include "sw/device/lib/testing/test_framework/ujson_ottf.h"
12 #include "sw/device/lib/testing/test_framework/ujson_ottf_commands.h"
13 #include "sw/device/lib/ujson/ujson.h"
14 
15 OTTF_DEFINE_TEST_CONFIG(.enable_uart_flow_control = true);
16 
17 volatile uint8_t kTestBytes[256];
18 volatile uint32_t kTestWord;
19 volatile uint32_t kEndTest;
20 
21 status_t command_processor(ujson_t *uj) {
22  while (!kEndTest) {
23  test_command_t command;
24  TRY(UJSON_WITH_CRC(ujson_deserialize_test_command_t, uj, &command));
25  status_t status = ujson_ottf_dispatch(uj, command);
26  if (status_err(status) == kUnimplemented) {
27  RESP_ERR(uj, status);
28  } else if (status_err(status) != kOk) {
29  return status;
30  }
31  }
32  return OK_STATUS();
33 }
34 
35 bool test_main(void) {
36  kEndTest = 0;
37  kTestWord = 0xface1234u;
38  for (size_t i = 0; i < 256; ++i) {
39  kTestBytes[i] = (uint8_t)i;
40  }
41  ujson_t uj = ujson_ottf_console();
42 
43  status_t result = OK_STATUS();
44  EXECUTE_TEST(result, command_processor, &uj);
45  return status_ok(result);
46 }