citra-emu
/
citra-canary
Archived
1
0
Fork 0

boss: Add some missing result codes. (#7334)

This commit is contained in:
Steveice10 2024-01-09 19:32:52 -08:00 committed by GitHub
parent 2ce0a9e899
commit 81ee7ad893
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 19 additions and 11 deletions

View File

@ -19,6 +19,14 @@
namespace Service::BOSS { namespace Service::BOSS {
namespace ErrCodes {
enum {
TaskNotFound = 51,
NsDataNotFound = 64,
UnknownPropertyID = 77,
};
}
OnlineService::OnlineService(u64 program_id_, u64 extdata_id_) OnlineService::OnlineService(u64 program_id_, u64 extdata_id_)
: program_id(program_id_), extdata_id(extdata_id_) {} : program_id(program_id_), extdata_id(extdata_id_) {}
@ -160,9 +168,9 @@ Result OnlineService::UnregisterTask(const u32 size, Kernel::MappedBuffer& buffe
std::string task_id(size, 0); std::string task_id(size, 0);
buffer.Read(task_id.data(), 0, size); buffer.Read(task_id.data(), 0, size);
if (task_id_list.erase(task_id) == 0) { if (task_id_list.erase(task_id) == 0) {
LOG_WARNING(Service_BOSS, "TaskId not in list"); LOG_WARNING(Service_BOSS, "TaskId '{}' not in list", task_id);
// TODO: Proper error code. return {ErrCodes::TaskNotFound, ErrorModule::BOSS, ErrorSummary::InvalidState,
return ResultUnknown; ErrorLevel::Status};
} }
return ResultSuccess; return ResultSuccess;
@ -340,8 +348,8 @@ Result OnlineService::GetNsDataHeaderInfo(const u32 ns_data_id, const NsDataHead
const auto entry = GetNsDataEntryFromId(ns_data_id); const auto entry = GetNsDataEntryFromId(ns_data_id);
if (!entry.has_value()) { if (!entry.has_value()) {
LOG_WARNING(Service_BOSS, "Failed to find NsData entry for ID {:#010X}", ns_data_id); LOG_WARNING(Service_BOSS, "Failed to find NsData entry for ID {:#010X}", ns_data_id);
// TODO: Proper error code. return {ErrCodes::NsDataNotFound, ErrorModule::BOSS, ErrorSummary::InvalidState,
return ResultUnknown; ErrorLevel::Status};
} }
static constexpr std::array EXPECTED_NS_DATA_HEADER_INFO_SIZES = { static constexpr std::array EXPECTED_NS_DATA_HEADER_INFO_SIZES = {
@ -404,8 +412,8 @@ ResultVal<std::size_t> OnlineService::ReadNsData(const u32 ns_data_id, const u64
std::optional<NsDataEntry> entry = GetNsDataEntryFromId(ns_data_id); std::optional<NsDataEntry> entry = GetNsDataEntryFromId(ns_data_id);
if (!entry.has_value()) { if (!entry.has_value()) {
LOG_WARNING(Service_BOSS, "Failed to find NsData entry for ID {:#010X}", ns_data_id); LOG_WARNING(Service_BOSS, "Failed to find NsData entry for ID {:#010X}", ns_data_id);
// TODO: Proper error code. return Result(ErrCodes::NsDataNotFound, ErrorModule::BOSS, ErrorSummary::InvalidState,
return ResultUnknown; ErrorLevel::Status);
} }
if (entry->header.payload_size < size + offset) { if (entry->header.payload_size < size + offset) {
@ -457,8 +465,8 @@ Result OnlineService::SendProperty(const u16 id, const u32 size, Kernel::MappedB
const auto property_id = static_cast<PropertyID>(id); const auto property_id = static_cast<PropertyID>(id);
if (!current_props.properties.contains(property_id)) { if (!current_props.properties.contains(property_id)) {
LOG_ERROR(Service_BOSS, "Unknown property with ID {:#06x} and size {}", property_id, size); LOG_ERROR(Service_BOSS, "Unknown property with ID {:#06x} and size {}", property_id, size);
// TODO: Proper error code. return Result(ErrCodes::UnknownPropertyID, ErrorModule::BOSS, ErrorSummary::Internal,
return ResultUnknown; ErrorLevel::Status);
} }
auto& prop = current_props.properties[property_id]; auto& prop = current_props.properties[property_id];
@ -498,8 +506,8 @@ Result OnlineService::ReceiveProperty(const u16 id, const u32 size, Kernel::Mapp
const auto property_id = static_cast<PropertyID>(id); const auto property_id = static_cast<PropertyID>(id);
if (!current_props.properties.contains(property_id)) { if (!current_props.properties.contains(property_id)) {
LOG_ERROR(Service_BOSS, "Unknown property with ID {:#06x} and size {}", property_id, size); LOG_ERROR(Service_BOSS, "Unknown property with ID {:#06x} and size {}", property_id, size);
// TODO: Proper error code. return {ErrCodes::UnknownPropertyID, ErrorModule::BOSS, ErrorSummary::Internal,
return ResultUnknown; ErrorLevel::Status};
} }
auto write_pod = [&]<typename T>(T& cur_prop) { auto write_pod = [&]<typename T>(T& cur_prop) {