blob: 8c1d3e292630b13605581b7c0f9a1be119957931 [file] [log] [blame]
hanliang.xiongcd3ad4c2024-12-23 11:07:00 +08001// SPDX-License-Identifier: Apache2.0
2/*
3 * Copyright (C) 2024 Amlogic Inc.
4 */
Zhizhong Zhangc44e0772021-06-10 21:25:57 +08005#include <stdio.h>
6#include <stdlib.h>
7
8#include "bootloader_message.h"
9
Bing Jianga8fad172022-10-19 13:51:09 +080010void usage(char *program_name) {
11 printf("ab system select!!!\n");
12 printf("%s get ---get current slot\n", program_name);
13 printf("%s set ---set slot\n", program_name);
14 printf("%s success_boot ---set boot success\n", program_name);
15 printf("example: \n");
16 printf("%s get\n", program_name);
17 printf("%s set _a\n", program_name);
18 printf("%s set _b\n", program_name);
19 printf("%s success_boot\n", program_name);
Zhizhong Zhangc44e0772021-06-10 21:25:57 +080020}
21
22int main(int argc, char **argv) {
Zhizhong Zhangc44e0772021-06-10 21:25:57 +080023 int ret = 0;
Bing Jianga8fad172022-10-19 13:51:09 +080024
25 if ((argc != 2) && (argc != 3)) {
26 usage(argv[0]);
Zhizhong Zhangc44e0772021-06-10 21:25:57 +080027 return -1;
28 }
Bing Jianga8fad172022-10-19 13:51:09 +080029
30 if (argc == 3) {
31 int slot;
32
33 if (!strcmp(argv[2],"_a")) {
34 slot = 0;
35 } else if (!strcmp(argv[2],"_b")) {
36 slot = 1;
37 } else {
38 printf("invalid slot: %s\n", argv[2]);
39 usage(argv[0]);
40 return -1;
41 }
42
43 if (!strcmp(argv[1], "set")) {
44 ret = set_active_slot(slot);
45 if (ret != 0) {
46 printf("set active slot: %s failed!\n", argv[2]);
Zhizhong Zhangc44e0772021-06-10 21:25:57 +080047 return -1;
48 }
Bing Jianga8fad172022-10-19 13:51:09 +080049 } else {
50 usage(argv[0]);
51 return -1;
Zhizhong Zhangc44e0772021-06-10 21:25:57 +080052 }
53 }
Bing Jianga8fad172022-10-19 13:51:09 +080054
55 if (!strcmp(argv[1], "get")) {
Zhizhong Zhangc44e0772021-06-10 21:25:57 +080056 int active = 0;
57 get_active_slot_from_misc(&active);
58 printf("active is %d\n", active);
Bing Jianga8fad172022-10-19 13:51:09 +080059 } else if (!strcmp(argv[1], "success_boot")) {
60 ret = set_successful_boot();
61 if (ret != 0) {
62 printf("set successful boot slot failed!\n");
63 return -1;
64 }
Zhizhong Zhangc44e0772021-06-10 21:25:57 +080065 }
66
67 return 0;
68}