1 /*---------------------------------------------------------------------------* 2 Project: Horizon 3 File: ndm_Result.h 4 5 Copyright (C)2009 Nintendo Co., Ltd. All rights reserved. 6 7 These coded instructions, statements, and computer programs contain 8 proprietary information of Nintendo of America Inc. and/or Nintendo 9 Company Ltd., and are protected by Federal copyright law. They may 10 not be disclosed to third parties or copied or duplicated in any form, 11 in whole or in part, without the prior written consent of Nintendo. 12 13 $Rev: 23906 $ 14 *---------------------------------------------------------------------------*/ 15 /*! 16 @file 17 18 :include nn/ndm.h 19 */ 20 21 #ifndef NN_NDM_NDM_RESULT_H_ 22 #define NN_NDM_NDM_RESULT_H_ 23 24 #ifdef __cplusplus 25 26 #include <nn/Result.h> 27 #include <nn/util/util_Result.h> 28 29 namespace nn { 30 namespace ndm { 31 32 enum Description 33 { 34 DESCRIPTION_INTERRUPT_BY_REQUEST, 35 DESCRIPTION_PROCESSING_PRIORITY_REQUEST, 36 DESCRIPTION_IN_ERROR_STATE, 37 DESCRIPTION_DISCONNECTED, 38 DESCRIPTION_CANCELLED_BY_OTHER_REQUEST, 39 DESCRIPTION_CANCELLED_BY_HARDWARE_EVENTS, 40 DESCRIPTION_CANCELLED_BY_DISCONNECT, 41 DESCRIPTION_CANCELLED_BY_USER_REQUEST, 42 DESCRIPTION_OPERATION_DENIED, 43 DESCRIPTION_LOCKED_BY_OTHER_PROCESS, 44 DESCRIPTION_NOT_LOCKED, 45 DESCRIPTION_ALREADY_SUSPENDED, 46 DESCRIPTION_NOT_SUSPENDED, 47 DESCRIPTION_INVALID_OPERATION, 48 DESCRIPTION_NOT_EXCLUSIVE, 49 DESCRIPTION_EXCLUSIVE_BY_OTHER_PROCESS, 50 DESCRIPTION_EXCLUSIVE_BY_OWN_PROCESS 51 }; 52 53 NN_DEFINE_RESULT_FUNC_LM(MakePermanentResult, Result::LEVEL_PERMANENT, Result::MODULE_NN_NDM); 54 NN_DEFINE_RESULT_FUNC_LSM(MakeInternalResult, Result::LEVEL_STATUS, Result::SUMMARY_INTERNAL, Result::MODULE_NN_NDM); 55 NN_DEFINE_RESULT_FUNC_LSM(MakeOutOfResourceResult, Result::LEVEL_PERMANENT, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_NDM); 56 NN_DEFINE_RESULT_FUNC_LSM(MakeInvalidStateResult, Result::LEVEL_STATUS, Result::SUMMARY_INVALID_STATE, Result::MODULE_NN_NDM); 57 NN_DEFINE_RESULT_FUNC_LSM(MakeCancelledResult, Result::LEVEL_STATUS, Result::SUMMARY_CANCELLED, Result::MODULE_NN_NDM); 58 NN_DEFINE_RESULT_FUNC_LSM(MakeInvalidArgumentResult, Result::LEVEL_PERMANENT, Result::SUMMARY_INVALID_ARGUMENT, Result::MODULE_NN_NDM); 59 NN_DEFINE_RESULT_FUNC_LSM(MakeNotSupportedResult, Result::LEVEL_USAGE, Result::SUMMARY_NOT_SUPPORTED, Result::MODULE_NN_NDM); 60 61 //!< 62 NN_DEFINE_RESULT_CONST_LSM( 63 ResultInterruptByRequest, 64 MakeInvalidStateResult, DESCRIPTION_INTERRUPT_BY_REQUEST 65 ); 66 67 //!< 68 NN_DEFINE_RESULT_CONST_LSM( 69 ResultCanceledByOtherRequest, 70 MakeInvalidStateResult, DESCRIPTION_CANCELLED_BY_OTHER_REQUEST 71 ); 72 73 //!< 74 NN_DEFINE_RESULT_CONST_LSM( 75 ResultProcessingPriorityRequest, 76 MakeInvalidStateResult, DESCRIPTION_PROCESSING_PRIORITY_REQUEST 77 ); 78 79 //!< 80 NN_DEFINE_RESULT_CONST_LSM( 81 ResultInErrorState, 82 MakeInvalidStateResult, DESCRIPTION_IN_ERROR_STATE 83 ); 84 85 //!< 86 NN_DEFINE_RESULT_CONST_LSM( 87 ResultDisconnected, 88 MakeInvalidStateResult, DESCRIPTION_DISCONNECTED 89 ); 90 91 //!< 92 NN_DEFINE_RESULT_CONST_LSM( 93 ResultCancelledByHardwareEvents, 94 MakeInvalidStateResult, DESCRIPTION_CANCELLED_BY_HARDWARE_EVENTS 95 ); 96 97 //!< 98 NN_DEFINE_RESULT_CONST_LSM( 99 ResultCancelledByDisconnect, 100 MakeInvalidStateResult, DESCRIPTION_CANCELLED_BY_DISCONNECT 101 ); 102 103 //!< 104 NN_DEFINE_RESULT_CONST_LSM( 105 ResultCancelledByUserRequest, 106 MakeInvalidStateResult, DESCRIPTION_CANCELLED_BY_USER_REQUEST 107 ); 108 109 //!< 110 NN_DEFINE_RESULT_CONST_LSM( 111 ResultInvalidOperation, 112 MakeInvalidStateResult, DESCRIPTION_INVALID_OPERATION 113 ); 114 115 //!< 116 NN_DEFINE_RESULT_CONST_LSM( 117 ResultInvalidEnumValue, 118 MakeInvalidArgumentResult, Result::DESCRIPTION_INVALID_ENUM_VALUE 119 ); 120 121 //!< 122 NN_DEFINE_RESULT_CONST_LSM( 123 ResultOperationDenied, 124 MakeInvalidStateResult, DESCRIPTION_OPERATION_DENIED 125 ); 126 127 //!< 128 NN_DEFINE_RESULT_CONST_LSM( 129 ResultLockedByOtherProcess, 130 MakeInvalidStateResult, DESCRIPTION_LOCKED_BY_OTHER_PROCESS 131 ); 132 133 //!< 134 NN_DEFINE_RESULT_CONST_LSM( 135 ResultNotLocked, 136 MakeInvalidStateResult, DESCRIPTION_NOT_LOCKED 137 ); 138 139 //!< 140 NN_DEFINE_RESULT_CONST_LSM( 141 ResultAlreadyInitialized, 142 MakeInvalidStateResult, Result::DESCRIPTION_ALREADY_INITIALIZED 143 ); 144 145 //!< 146 NN_DEFINE_RESULT_CONST_LSM( 147 ResultNotSuspended, 148 MakeInvalidStateResult, DESCRIPTION_NOT_SUSPENDED 149 ); 150 151 //!< 152 NN_DEFINE_RESULT_CONST_LSM( 153 ResultAlreadySuspended, 154 MakeInvalidStateResult, DESCRIPTION_ALREADY_SUSPENDED 155 ); 156 157 //!< 158 NN_DEFINE_RESULT_CONST_LSM( 159 ResultNotInitialized, 160 MakeInvalidStateResult, Result::DESCRIPTION_NOT_INITIALIZED 161 ); 162 163 //!< 164 NN_DEFINE_RESULT_CONST_LSM( 165 ResultNotExclusive, 166 MakeInvalidStateResult, DESCRIPTION_NOT_EXCLUSIVE 167 ); 168 169 //!< 170 NN_DEFINE_RESULT_CONST_LSM( 171 ResultNotImplemented, 172 MakeNotSupportedResult, Result::DESCRIPTION_NOT_IMPLEMENTED 173 ); 174 175 //!< 176 NN_DEFINE_RESULT_CONST_LSM( 177 ResultExclusiveByOtherProcess, 178 MakeInvalidStateResult, DESCRIPTION_EXCLUSIVE_BY_OTHER_PROCESS 179 ); 180 181 //!< 182 NN_DEFINE_RESULT_CONST_LSM( 183 ResultExclusiveByOwnProcess, 184 MakeInvalidStateResult, DESCRIPTION_EXCLUSIVE_BY_OWN_PROCESS 185 ); 186 } 187 } 188 189 #define NN_NDM_WARN(result, ...) \ 190 NN_LOG_WARN(__VA_ARGS__); \ 191 nn::dbg::PrintResult(result); 192 193 #define NN_NDM_WARN_AND_RETURN_IF_FAILED(result, ...) \ 194 do \ 195 { \ 196 ::nn::Result nn_util_return_if_failure_result = (result); \ 197 if (nn_util_return_if_failure_result.IsFailure()) \ 198 { \ 199 NN_NDM_WARN(result, __VA_ARGS__); \ 200 return nn_util_return_if_failure_result; \ 201 } \ 202 } while(0) 203 204 #define NN_NDM_WARN_IF_FAILED(result, ...) \ 205 do \ 206 { \ 207 ::nn::Result nn_util_return_if_failure_result = (result); \ 208 if (nn_util_return_if_failure_result.IsFailure()) \ 209 { \ 210 NN_NDM_WARN(result, __VA_ARGS__); \ 211 } \ 212 } while(0) 213 214 #endif // __cplusplus 215 216 #endif /* NN_NDM_NDM_RESULT_H_ */ 217