* added filename mode setting * added furi_flag checks for when filename_mode is set * changed naming for ibutton, lfrfid and subghz * requested changes from PR * Lib: gather all naming bits and pieces under name generator module. Properly bump api version. FuriHal: fix RTC flag enum. * PR requested changes * bug fix for arg type * added functionality for other application scenes * Lib: cleanup name generator API, simplify usage. Sync API symbols. * Lib: proper size type in name_generator. Cleanup. * FuriHal: cleanup rtc api usage across firmware Co-authored-by: あく <alleteam@gmail.com>
		
			
				
	
	
		
			76 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
#include "name_generator.h"
 | 
						|
 | 
						|
#include <stdio.h>
 | 
						|
#include <stdint.h>
 | 
						|
#include <furi_hal_rtc.h>
 | 
						|
#include <stdlib.h>
 | 
						|
#include <stdbool.h>
 | 
						|
#include <furi.h>
 | 
						|
 | 
						|
const char* const name_generator_left[] = {
 | 
						|
    "ancient",  "hollow", "strange",   "disappeared", "unknown",    "unthinkable", "unnameable",
 | 
						|
    "nameless", "my",     "concealed", "forgotten",   "hidden",     "mysterious",  "obscure",
 | 
						|
    "random",   "remote", "uncharted", "undefined",   "untraveled", "untold",
 | 
						|
};
 | 
						|
 | 
						|
const char* const name_generator_right[] = {
 | 
						|
    "door",
 | 
						|
    "entrance",
 | 
						|
    "doorway",
 | 
						|
    "entry",
 | 
						|
    "portal",
 | 
						|
    "entree",
 | 
						|
    "opening",
 | 
						|
    "crack",
 | 
						|
    "access",
 | 
						|
    "corridor",
 | 
						|
    "passage",
 | 
						|
    "port",
 | 
						|
};
 | 
						|
 | 
						|
void name_generator_make_auto(char* name, size_t max_name_size, const char* prefix) {
 | 
						|
    if(furi_hal_rtc_is_flag_set(FuriHalRtcFlagDetailedFilename)) {
 | 
						|
        name_generator_make_detailed(name, max_name_size, prefix);
 | 
						|
    } else {
 | 
						|
        name_generator_make_random(name, max_name_size);
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
void name_generator_make_random(char* name, size_t max_name_size) {
 | 
						|
    furi_assert(name);
 | 
						|
    furi_assert(max_name_size);
 | 
						|
 | 
						|
    uint8_t name_generator_left_i = rand() % COUNT_OF(name_generator_left);
 | 
						|
    uint8_t name_generator_right_i = rand() % COUNT_OF(name_generator_right);
 | 
						|
 | 
						|
    snprintf(
 | 
						|
        name,
 | 
						|
        max_name_size,
 | 
						|
        "%s_%s",
 | 
						|
        name_generator_left[name_generator_left_i],
 | 
						|
        name_generator_right[name_generator_right_i]);
 | 
						|
 | 
						|
    // Set first symbol to upper case
 | 
						|
    name[0] = name[0] - 0x20;
 | 
						|
}
 | 
						|
 | 
						|
void name_generator_make_detailed(char* name, size_t max_name_size, const char* prefix) {
 | 
						|
    furi_assert(name);
 | 
						|
    furi_assert(max_name_size);
 | 
						|
    furi_assert(prefix);
 | 
						|
 | 
						|
    FuriHalRtcDateTime dateTime;
 | 
						|
    furi_hal_rtc_get_datetime(&dateTime);
 | 
						|
 | 
						|
    snprintf(
 | 
						|
        name,
 | 
						|
        max_name_size,
 | 
						|
        "%s-%.4d_%.2d_%.2d-%.2d_%.2d",
 | 
						|
        prefix,
 | 
						|
        dateTime.year,
 | 
						|
        dateTime.month,
 | 
						|
        dateTime.day,
 | 
						|
        dateTime.hour,
 | 
						|
        dateTime.minute);
 | 
						|
}
 |