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