70 lines
1.7 KiB
C
70 lines
1.7 KiB
C
// SPDX-License-Identifier: Apache2.0
|
|||
|
|
/*
|
||
|
|
* Copyright (C) 2024 Amlogic Inc.
|
||
|
|
*/
|
||
|
|
#include <stdio.h>
|
||
|
|
#include <stdlib.h>
|
||
|
|
#include <string.h>
|
||
|
|
|
||
|
|
#include "bootloader_message.h"
|
||
|
|
|
||
|
|
void usage(char *program_name) {
|
||
|
|
printf("ab system select!!!\n");
|
||
|
|
printf("%s get ---get current slot\n", program_name);
|
||
|
|
printf("%s set ---set slot\n", program_name);
|
||
|
|
printf("%s success_boot ---set boot success\n", program_name);
|
||
|
|
printf("example: \n");
|
||
|
|
printf("%s get\n", program_name);
|
||
|
|
printf("%s set _a\n", program_name);
|
||
|
|
printf("%s set _b\n", program_name);
|
||
|
|
printf("%s success_boot\n", program_name);
|
||
|
|
}
|
||
|
|
|
||
|
|
int main(int argc, char **argv) {
|
||
|
|
int ret = 0;
|
||
|
|
|
||
|
|
if ((argc != 2) && (argc != 3)) {
|
||
|
|
usage(argv[0]);
|
||
|
|
return -1;
|
||
|
|
}
|
||
|
|
|
||
|
|
if (argc == 3) {
|
||
|
|
int slot;
|
||
|
|
|
||
|
|
if (!strcmp(argv[2],"_a")) {
|
||
|
|
slot = 0;
|
||
|
|
} else if (!strcmp(argv[2],"_b")) {
|
||
|
|
slot = 1;
|
||
|
|
} else {
|
||
|
|
printf("invalid slot: %s\n", argv[2]);
|
||
|
|
usage(argv[0]);
|
||
|
|
return -1;
|
||
|
|
}
|
||
|
|
|
||
|
|
if (!strcmp(argv[1], "set")) {
|
||
|
|
ret = set_active_slot(slot);
|
||
|
|
if (ret != 0) {
|
||
|
|
printf("set active slot: %s failed!\n", argv[2]);
|
||
|
|
return -1;
|
||
|
|
}
|
||
|
|
} else {
|
||
|
|
usage(argv[0]);
|
||
|
|
return -1;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
if (!strcmp(argv[1], "get")) {
|
||
|
|
SlotType_e active = SLOT_A;
|
||
|
|
get_active_slot(&active);
|
||
|
|
printf("active is %d\n", active);
|
||
|
|
} else if (!strcmp(argv[1], "success_boot")) {
|
||
|
|
ret = set_successful_boot();
|
||
|
|
if (ret != 0) {
|
||
|
|
printf("set successful boot slot failed!\n");
|
||
|
|
return -1;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
return 0;
|
||
|
|
}
|