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