VCOS_STATUS_T vcos_log_test_cmd( VCOS_CMD_PARAM_T *param ) { if ( param->argc == 1 ) { static int seq_num = 100; /* No additional arguments - generate a message with an incrementing number */ vcos_log_error( "Test message %d", seq_num ); seq_num++; vcos_cmd_printf( param, "Logged 'Test message %d'\n", seq_num ); } else { int arg_idx; /* Arguments supplied - log these */ for ( arg_idx = 0; arg_idx < param->argc; arg_idx++ ) { vcos_log_error( "argv[%d] = '%s'", arg_idx, param->argv[arg_idx] ); } vcos_cmd_printf( param, "Logged %d line(s) of test data\n", param->argc ); } return VCOS_SUCCESS; }
VCOS_STATUS_T vcos_log_status_cmd( VCOS_CMD_PARAM_T *param ) { VCOS_LOG_CAT_T *cat; VCOS_STATUS_T status; vcos_mutex_lock(&lock); if ( param->argc == 1) { int nw; int nameWidth = 0; /* Print information about all of the categories. */ for ( cat = vcos_logging_categories; cat != NULL; cat = cat->next ) { nw = (int)strlen( cat->name ); if ( nw > nameWidth ) { nameWidth = nw; } } for ( cat = vcos_logging_categories; cat != NULL; cat = cat->next ) { vcos_cmd_printf( param, "%-*s - %s\n", nameWidth, cat->name, vcos_log_level_to_string( cat->level )); } } else { /* Print information about a particular category */ for ( cat = vcos_logging_categories; cat != NULL; cat = cat->next ) { if ( vcos_strcmp( cat->name, param->argv[1] ) == 0 ) { vcos_cmd_printf( param, "%s - %s\n", cat->name, vcos_log_level_to_string( cat->level )); break; } } if ( cat == NULL ) { vcos_cmd_printf( param, "Unrecognized logging category: '%s'\n", param->argv[1] ); status = VCOS_ENOENT; goto out; } } status = VCOS_SUCCESS; out: vcos_mutex_unlock(&lock); return status; }
VCOS_STATUS_T vcos_log_assert_cmd( VCOS_CMD_PARAM_T *param ) { (void)param; #if defined( NDEBUG ) && !defined( VCOS_RELEASE_ASSERTS ) vcos_log_error( "vcos_asserts have been compiled out" ); vcos_cmd_printf( param, "vcos_asserts have been compiled out - did a vcos_log_error instead\n" ); #else vcos_assert(0); vcos_cmd_printf( param, "Executed vcos_assert(0)\n" ); #endif return VCOS_SUCCESS; }
VCOS_STATUS_T vcos_log_set_cmd( VCOS_CMD_PARAM_T *param ) { VCOS_LOG_CAT_T *cat; char *name; char *levelStr; VCOS_LOG_LEVEL_T level; VCOS_STATUS_T status; if ( param->argc != 3 ) { vcos_cmd_usage( param ); return VCOS_EINVAL; } name = param->argv[1]; levelStr = param->argv[2]; if ( vcos_string_to_log_level( levelStr, &level ) != VCOS_SUCCESS ) { vcos_cmd_printf( param, "Unrecognized logging level: '%s'\n", levelStr ); return VCOS_EINVAL; } vcos_mutex_lock(&lock); status = VCOS_SUCCESS; for ( cat = vcos_logging_categories; cat != NULL; cat = cat->next ) { if ( vcos_strcmp( name, cat->name ) == 0 ) { cat->level = level; vcos_cmd_printf( param, "Category %s level set to %s\n", name, levelStr ); break; } else if ( vcos_strcmp( name, "*") == 0 ) { cat->level = level; vcos_cmd_printf( param, "Category %s level set to %s\n", name, levelStr ); } } if ( cat == NULL ) { vcos_cmd_printf( param, "Unrecognized category: '%s'\n", name ); status = VCOS_ENOENT; } vcos_mutex_unlock(&lock); return status; }