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: 31226 $ 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 = 1, 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 DESCRIPTION_BACKGROUND_DISCONNECTED 52 }; 53 54 NN_DEFINE_RESULT_FUNC_LM(MakePermanentResult, Result::LEVEL_PERMANENT, Result::MODULE_NN_NDM); 55 NN_DEFINE_RESULT_FUNC_LSM(MakeInternalResult, Result::LEVEL_STATUS, Result::SUMMARY_INTERNAL, Result::MODULE_NN_NDM); 56 NN_DEFINE_RESULT_FUNC_LSM(MakeOutOfResourceResult, Result::LEVEL_PERMANENT, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_NDM); 57 NN_DEFINE_RESULT_FUNC_LSM(MakeInvalidStateResult, Result::LEVEL_STATUS, Result::SUMMARY_INVALID_STATE, Result::MODULE_NN_NDM); 58 NN_DEFINE_RESULT_FUNC_LSM(MakeCancelledResult, Result::LEVEL_STATUS, Result::SUMMARY_CANCELLED, Result::MODULE_NN_NDM); 59 NN_DEFINE_RESULT_FUNC_LSM(MakeInvalidArgumentResult, Result::LEVEL_PERMANENT, Result::SUMMARY_INVALID_ARGUMENT, Result::MODULE_NN_NDM); 60 NN_DEFINE_RESULT_FUNC_LSM(MakeNotSupportedResult, Result::LEVEL_USAGE, Result::SUMMARY_NOT_SUPPORTED, Result::MODULE_NN_NDM); 61 62 //!< 63 NN_DEFINE_RESULT_CONST_LSM( 64 ResultInterruptByRequest, 65 MakeInvalidStateResult, DESCRIPTION_INTERRUPT_BY_REQUEST 66 ); 67 68 //!< 69 NN_DEFINE_RESULT_CONST_LSM( 70 ResultCanceledByOtherRequest, 71 MakeInvalidStateResult, DESCRIPTION_CANCELLED_BY_OTHER_REQUEST 72 ); 73 74 //!< 75 NN_DEFINE_RESULT_CONST_LSM( 76 ResultProcessingPriorityRequest, 77 MakeInvalidStateResult, DESCRIPTION_PROCESSING_PRIORITY_REQUEST 78 ); 79 80 //!< 81 NN_DEFINE_RESULT_CONST_LSM( 82 ResultInErrorState, 83 MakeInvalidStateResult, DESCRIPTION_IN_ERROR_STATE 84 ); 85 86 //!< 87 NN_DEFINE_RESULT_CONST_LSM( 88 ResultDisconnected, 89 MakeInvalidStateResult, DESCRIPTION_DISCONNECTED 90 ); 91 92 //!< 93 NN_DEFINE_RESULT_CONST_LSM( 94 ResultCancelledByHardwareEvents, 95 MakeInvalidStateResult, DESCRIPTION_CANCELLED_BY_HARDWARE_EVENTS 96 ); 97 98 //!< 99 NN_DEFINE_RESULT_CONST_LSM( 100 ResultCancelledByDisconnect, 101 MakeInvalidStateResult, DESCRIPTION_CANCELLED_BY_DISCONNECT 102 ); 103 104 //!< 105 NN_DEFINE_RESULT_CONST_LSM( 106 ResultCancelledByUserRequest, 107 MakeInvalidStateResult, DESCRIPTION_CANCELLED_BY_USER_REQUEST 108 ); 109 110 //!< 111 NN_DEFINE_RESULT_CONST_LSM( 112 ResultInvalidOperation, 113 MakeInvalidStateResult, DESCRIPTION_INVALID_OPERATION 114 ); 115 116 //!< 117 NN_DEFINE_RESULT_CONST_LSM( 118 ResultInvalidEnumValue, 119 MakeInvalidArgumentResult, Result::DESCRIPTION_INVALID_ENUM_VALUE 120 ); 121 122 //!< 123 NN_DEFINE_RESULT_CONST_LSM( 124 ResultOperationDenied, 125 MakeInvalidStateResult, DESCRIPTION_OPERATION_DENIED 126 ); 127 128 //!< 129 NN_DEFINE_RESULT_CONST_LSM( 130 ResultLockedByOtherProcess, 131 MakeInvalidStateResult, DESCRIPTION_LOCKED_BY_OTHER_PROCESS 132 ); 133 134 //!< 135 NN_DEFINE_RESULT_CONST_LSM( 136 ResultNotLocked, 137 MakeInvalidStateResult, DESCRIPTION_NOT_LOCKED 138 ); 139 140 //!< 141 NN_DEFINE_RESULT_CONST_LSM( 142 ResultAlreadyInitialized, 143 MakeInvalidStateResult, Result::DESCRIPTION_ALREADY_INITIALIZED 144 ); 145 146 //!< 147 NN_DEFINE_RESULT_CONST_LSM( 148 ResultNotSuspended, 149 MakeInvalidStateResult, DESCRIPTION_NOT_SUSPENDED 150 ); 151 152 //!< 153 NN_DEFINE_RESULT_CONST_LSM( 154 ResultAlreadySuspended, 155 MakeInvalidStateResult, DESCRIPTION_ALREADY_SUSPENDED 156 ); 157 158 //!< 159 NN_DEFINE_RESULT_CONST_LSM( 160 ResultNotInitialized, 161 MakeInvalidStateResult, Result::DESCRIPTION_NOT_INITIALIZED 162 ); 163 164 //!< 165 NN_DEFINE_RESULT_CONST_LSM( 166 ResultNotExclusive, 167 MakeInvalidStateResult, DESCRIPTION_NOT_EXCLUSIVE 168 ); 169 170 //!< 171 NN_DEFINE_RESULT_CONST_LSM( 172 ResultNotImplemented, 173 MakeNotSupportedResult, Result::DESCRIPTION_NOT_IMPLEMENTED 174 ); 175 176 //!< 177 NN_DEFINE_RESULT_CONST_LSM( 178 ResultExclusiveByOtherProcess, 179 MakeInvalidStateResult, DESCRIPTION_EXCLUSIVE_BY_OTHER_PROCESS 180 ); 181 182 //!< 183 NN_DEFINE_RESULT_CONST_LSM( 184 ResultExclusiveByOwnProcess, 185 MakeInvalidStateResult, DESCRIPTION_EXCLUSIVE_BY_OWN_PROCESS 186 ); 187 188 //!< 189 NN_DEFINE_RESULT_CONST_LSM( 190 ResultBackgroundDisconnected, 191 MakeInvalidStateResult, DESCRIPTION_BACKGROUND_DISCONNECTED 192 ); 193 } 194 } 195 196 #define NN_NDM_WARN(result, ...) \ 197 NN_LOG_WARN(__VA_ARGS__); \ 198 nn::dbg::PrintResult(result); 199 200 #define NN_NDM_WARN_AND_RETURN_IF_FAILED(result, ...) \ 201 do \ 202 { \ 203 ::nn::Result nn_util_return_if_failure_result = (result); \ 204 if (nn_util_return_if_failure_result.IsFailure()) \ 205 { \ 206 NN_NDM_WARN(result, __VA_ARGS__); \ 207 return nn_util_return_if_failure_result; \ 208 } \ 209 } while(0) 210 211 #define NN_NDM_WARN_IF_FAILED(result, ...) \ 212 do \ 213 { \ 214 ::nn::Result nn_util_return_if_failure_result = (result); \ 215 if (nn_util_return_if_failure_result.IsFailure()) \ 216 { \ 217 NN_NDM_WARN(result, __VA_ARGS__); \ 218 } \ 219 } while(0) 220 221 #endif // __cplusplus 222 223 #endif /* NN_NDM_NDM_RESULT_H_ */ 224