in v2/src/logger.c [29:88]
int logger_init(void)
{
int result;
uint32_t i;
switch (logger_state)
{
default:
(void)printf("Unexpected logger state: %" PRI_MU_ENUM "", MU_ENUM_VALUE(LOGGER_STATE, logger_state));
result = MU_FAILURE;
break;
case LOGGER_STATE_INITIALIZED:
{
/* Codes_SRS_LOGGER_01_002: [ If logger is already initialized, logger_init shall increment the logger initialization counter, succeed and return 0. ] */
logger_init_count++;
result = 0;
break;
}
case LOGGER_STATE_NOT_INITIALIZED:
{
/* Codes_SRS_LOGGER_01_019: [ If logger is not already initialized: ] */
/* Codes_SRS_LOGGER_01_020: [ logger_init shall set the logger initialization counter to 1. ] */
logger_init_count = 1;
/* Codes_SRS_LOGGER_01_003: [ logger_init shall call the init function of every sink that is configured to be used. ] */
for (i = 0; i < log_sink_count; i++)
{
if (log_sinks[i]->init() != 0)
{
(void)printf("init of sink at index %" PRIu32 " failed\r\n", i);
break;
}
}
if (i < log_sink_count)
{
/* Codes_SRS_LOGGER_01_004: [ If init fails, all sinks already initialized shall have their deinit function called and logger_init shall fail and return a non-zero value. ] */
for (uint32_t j = 0; j < i; j++)
{
log_sinks[j]->deinit();
}
result = MU_FAILURE;
}
else
{
logger_state = LOGGER_STATE_INITIALIZED;
/* Codes_SRS_LOGGER_01_005: [ Otherwise, logger_init shall succeed and return 0. ] */
result = 0;
}
break;
}
}
return result;
}