13 #include "../TlmCmd/packet_handler.h"
14 #include "../System/AnomalyLogger/anomaly_logger.h"
16 #include "../TlmCmd/common_cmd_packet_util.h"
18 static UtilityCounter utility_counter_;
19 const UtilityCounter*
const utility_counter = &utility_counter_;
21 static void UTIL_COUNTER_all_init_(
void);
22 static void UTIL_COUNTER_clear_(UTIL_COUNTER_NAME num);
23 static void UTIL_COUNTER_incl_(UTIL_COUNTER_NAME num);
26 AppInfo UTIL_COUNTER_create_app(
void)
31 static void UTIL_COUNTER_all_init_(
void)
34 for (i = 0; i < UTIL_COUNTER_MAX; i++)
36 utility_counter_.cnt[i].counter = 0;
37 utility_counter_.cnt[i].threshold = 0;
38 utility_counter_.cnt[i].anomaly_active = 0;
42 static void UTIL_COUNTER_clear_(UTIL_COUNTER_NAME num)
44 utility_counter_.cnt[num].counter = 0;
47 static void UTIL_COUNTER_incl_(UTIL_COUNTER_NAME num)
49 if (utility_counter_.cnt[num].counter == 0xffffffff)
51 utility_counter_.cnt[num].counter = 0;
55 utility_counter_.cnt[num].counter += 1;
57 if (utility_counter_.cnt[num].counter >= utility_counter_.cnt[num].threshold)
59 if (utility_counter_.cnt[num].anomaly_active)
63 AL_add_anomaly(AL_GROUP_UTIL_CNT, (uint32_t)num);
65 utility_counter_.cnt[num].anomaly_active = 0;
73 UTIL_COUNTER_NAME index;
79 if (index < UTIL_COUNTER_MAX)
82 UTIL_COUNTER_incl_(index);
94 UTIL_COUNTER_NAME index;
100 if (index < UTIL_COUNTER_MAX)
103 UTIL_COUNTER_clear_(index);
105 else if (index == 0xff)
108 UTIL_COUNTER_all_init_();
119 UTIL_COUNTER_NAME index;
125 if (index < UTIL_COUNTER_MAX)
128 memcpy(&utility_counter_.cnt[index].anomaly_active, &
CCP_get_param_head(packet)[8], 1);
129 if (utility_counter_.cnt[index].anomaly_active > 1)
131 utility_counter_.cnt[index].anomaly_active = 0;
AppInfo AI_create_app_info(const char *name, void(*initializer)(void), void(*entry_point)(void))
AppInfo を作る
@ CCP_EXEC_ILLEGAL_PARAMETER
コマンド実行時のパラメタエラー
const uint8_t * CCP_get_param_head(const CommonCmdPacket *packet)
先頭のパラメタのポインタを取得
CCP_CmdRet CCP_make_cmd_ret_without_err_code(CCP_EXEC_STS exec_sts)
コマンド返り値である CCP_CmdRet を作成(エラーコード不使用版)
int UTIL_COUNTER_dummy(void)