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