Properly document both services

This commit is contained in:
XorTroll 2020-04-16 15:08:42 +02:00
parent 9d9e72b3ac
commit 9e0f259f6c
2 changed files with 107 additions and 22 deletions

View File

@ -1,6 +1,6 @@
/**
* @file mii.h
* @brief Mii services IPC wrapper.
* @brief Mii services (mii:*) IPC wrapper.
* @author XorTroll
* @copyright libnx Authors
*/
@ -9,49 +9,56 @@
#include "../sf/service.h"
typedef enum {
MiiServiceType_System,
MiiServiceType_User
MiiServiceType_System = 0, ///< Initializes mii:e.
MiiServiceType_User = 1, ///< Initializes mii:u.
} MiiServiceType;
/// Mii age.
typedef enum {
MiiAge_Young,
MiiAge_Normal,
MiiAge_Old,
MiiAge_All
MiiAge_Young = 0, ///< Young
MiiAge_Normal = 1, ///< Normal
MiiAge_Old = 2, ///< Old
MiiAge_All = 3, ///< All of them
} MiiAge;
/// Mii gender.
typedef enum {
MiiGender_Male,
MiiGender_Female,
MiiGender_All
MiiGender_Male = 0, ///< Male
MiiGender_Female = 1, ///< Female
MiiGender_All = 2, ///< Both of them
} MiiGender;
/// Mii race.
typedef enum {
MiiRace_Black,
MiiRace_White,
MiiRace_Asian,
MiiRace_All
MiiRace_Black = 0, ///< Black
MiiRace_White = 1, ///< White
MiiRace_Asian = 2, ///< Asian
MiiRace_All = 3, ///< All of them
} MiiRace;
// Mii source flag.
typedef enum {
MiiSourceFlag_Database = BIT(0),
MiiSourceFlag_Default = BIT(1),
MiiSourceFlag_All = MiiSourceFlag_Database | MiiSourceFlag_Default
MiiSourceFlag_Database = BIT(0), ///< Miis created by the user
MiiSourceFlag_Default = BIT(1), ///< Default console miis
MiiSourceFlag_All = MiiSourceFlag_Database | MiiSourceFlag_Default, ///< All of them
} MiiSourceFlag;
// Mii special key code
typedef enum {
MiiSpecialKeyCode_Normal,
MiiSpecialKeyCode_Special = 0xA523B78F
MiiSpecialKeyCode_Normal = 0, ///< Normal miis
MiiSpecialKeyCode_Special = 0xA523B78F, ///< Special miis
} MiiSpecialKeyCode;
typedef struct {
Service s;
} MiiDatabase;
// Mii create ID.
typedef struct {
Uuid uuid;
} MiiCreateId;
// Mii data structure.
typedef struct {
MiiCreateId create_id;
u16 mii_name[10+1]; ///< utf-16be, null-terminated
@ -115,12 +122,56 @@ void miiExit(void);
/// Gets the Service object for the actual mii service session.
Service* miiGetServiceSession(void);
/**
* @brief Opens a mii database.
* @param[in] key_code Mii key code filter.
* @param[out] out Database.
*/
Result miiOpenDatabase(MiiDatabase *out, MiiSpecialKeyCode key_code);
/**
* @brief Returns whether the mii database is updated.
* @param[in] db Database.
* @param[in] flag Source flag.
* @param[out] out Out boolean.
*/
Result miiDatabaseIsUpdated(MiiDatabase *db, u8 *out, MiiSourceFlag flag);
/**
* @brief Returns whether the mii database is full.
* @param[in] db Database.
* @param[in] flag Source flag.
* @param[out] out Out boolean.
*/
Result miiDatabaseIsFull(MiiDatabase *db, u8 *out);
/**
* @brief Returns number of miis in the database with the specified source flag.
* @param[in] db Database.
* @param[in] flag Source flag.
* @param[out] out Out count.
*/
Result miiDatabaseGetCount(MiiDatabase *db, u32 *out, MiiSourceFlag flag);
/**
* @brief Reads mii charinfo data from the specified source flag.
* @param[in] db Database.
* @param[in] flag Source flag.
* @param[out] out_infos Output mii charinfo array.
* @param[in] out_infos_count Amount of mii chainfos to read.
* @param[out] out_count Number of mii charinfos which were read.
*/
Result miiDatabaseGetCharInfo(MiiDatabase *db, MiiSourceFlag flag, MiiCharInfo *out_infos, size_t out_infos_count, u32 *out_count);
/**
* @brief Generates a random mii charinfo (doesn't register it in the console database).
* @param[in] db Database.
* @param[in] age Mii's age.
* @param[in] gender Mii's gender.
* @param[in] race Mii's race.
* @param[out] out_info Out mii charinfo data.
*/
Result miiDatabaseBuildRandom(MiiDatabase *db, MiiAge age, MiiGender gender, MiiRace race, MiiCharInfo *out_info);
/// Closes a mii database.
void miiDatabaseClose(MiiDatabase *db);

View File

@ -7,15 +7,17 @@
#pragma once
#include "mii.h"
/// Image ID.
typedef struct {
Uuid uuid;
} MiiimgImageId;
/// Image attribute.
typedef struct {
MiiimgImageId image_id;
MiiCreateId create_id;
MiiimgImageId image_id; ///< Image ID.
MiiCreateId create_id; ///< Mii's create ID.
u32 unk;
u16 mii_name[10+1];
u16 mii_name[10+1]; ///< utf-16be, null-terminated
} PACKED MiiimgImageAttribute;
/// Initialize miiimg.
@ -27,9 +29,41 @@ void miiimgExit(void);
/// Gets the Service object for the actual miiimg service session.
Service* miiimgGetServiceSession(void);
/**
* @brief Reloads the image database.
*/
Result miiimgReload();
/**
* @brief Gets the number of mii images in the database.
* @param[out] out_count Mii image count.
*/
Result miiimgGetCount(u32 *out_count);
/**
* @brief Gets whether the image database is empty.
* @param[out] out_empty Whether the database is empty.
*/
Result miiimgIsEmpty(u8 *out_empty);
/**
* @brief Gets whether the image database is full.
* @param[out] out_empty Whether the database is full.
*/
Result miiimgIsFull(u8 *out_full);
/**
* @brief Gets the image attribute for the specified image index.
* @param[in] index Image index.
* @param[out] out_attr Out image attribute.
*/
Result miiimgGetAttribute(u32 index, MiiimgImageAttribute *out_attr);
/**
* @brief Loads the image data (raw RGBA8) for the specified image ID.
* @param[in] id Input image ID.
* @param[out] out_image Out iamge buffer.
* @param[in] out_image_size Out image buffer size.
* @note Server doesn't seem to check the image buffer size, but 0x40000 is the optimal size.
*/
Result miiimgLoadImage(MiiimgImageId id, void *out_image, size_t out_image_size);