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