|
|
|
@ -21,17 +21,6 @@
|
|
|
|
|
|
|
|
|
|
namespace Service::Account {
|
|
|
|
|
|
|
|
|
|
// TODO: RE this structure
|
|
|
|
|
struct UserData {
|
|
|
|
|
INSERT_PADDING_WORDS(1);
|
|
|
|
|
u32 icon_id;
|
|
|
|
|
u8 bg_color_id;
|
|
|
|
|
INSERT_PADDING_BYTES(0x7);
|
|
|
|
|
INSERT_PADDING_BYTES(0x10);
|
|
|
|
|
INSERT_PADDING_BYTES(0x60);
|
|
|
|
|
};
|
|
|
|
|
static_assert(sizeof(UserData) == 0x80, "UserData structure has incorrect size");
|
|
|
|
|
|
|
|
|
|
// Smallest JPEG https://github.com/mathiasbynens/small/blob/master/jpeg.jpg
|
|
|
|
|
// used as a backup should the one on disk not exist
|
|
|
|
|
constexpr u32 backup_jpeg_size = 107;
|
|
|
|
@ -72,9 +61,11 @@ private:
|
|
|
|
|
void Get(Kernel::HLERequestContext& ctx) {
|
|
|
|
|
LOG_INFO(Service_ACC, "called user_id={}", user_id.Format());
|
|
|
|
|
ProfileBase profile_base{};
|
|
|
|
|
std::array<u8, MAX_DATA> data{};
|
|
|
|
|
ProfileData data{};
|
|
|
|
|
if (profile_manager.GetProfileBaseAndData(user_id, profile_base, data)) {
|
|
|
|
|
ctx.WriteBuffer(data);
|
|
|
|
|
std::array<u8, sizeof(ProfileData)> raw_data;
|
|
|
|
|
std::memcpy(raw_data.data(), &data, sizeof(ProfileData));
|
|
|
|
|
ctx.WriteBuffer(raw_data);
|
|
|
|
|
IPC::ResponseBuilder rb{ctx, 16};
|
|
|
|
|
rb.Push(RESULT_SUCCESS);
|
|
|
|
|
rb.PushRaw(profile_base);
|
|
|
|
|