1 /*---------------------------------------------------------------------------*
2   Project:  Horizon
3   File:     hio_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: 46347 $
14  *---------------------------------------------------------------------------*/
15 
16 #ifndef NN_HIO_CTR_HIO_RESULT_H_
17 #define NN_HIO_CTR_HIO_RESULT_H_
18 
19 #include <nn/Result.h>
20 
21 namespace nn {
22 namespace hio {
23 namespace CTR {
24 
25     /* Please see man pages for details
26 
27     */
28     enum ResultDescription
29     {
30         DESCRIPTION_INVALID_SELECTION,          //
31         DESCRIPTION_TOO_LARGE,                  //
32         DESCRIPTION_NOT_AUTHORIZED,             //
33         DESCRIPTION_ALREADY_DONE,               //
34         DESCRIPTION_INVALID_SIZE,               //
35         DESCRIPTION_INVALID_ENUM_VALUE,         //
36         DESCRIPTION_INVALID_COMBINATION,        //
37         DESCRIPTION_NO_DATA,                    //
38         DESCRIPTION_BUSY,                       //
39         DESCRIPTION_MISALIGNED_ADDRESS,         //
40         DESCRIPTION_MISALIGNED_SIZE,            //
41         DESCRIPTION_OUT_OF_MEMORY,              //
42         DESCRIPTION_NOT_IMPLEMENTED,            //
43         DESCRIPTION_INVALID_ADDRESS,            //
44         DESCRIPTION_INVALID_POINTER,            //
45         DESCRIPTION_INVALID_HANDLE,             //
46         DESCRIPTION_NOT_INITIALIZED,            //
47         DESCRIPTION_ALREADY_INITIALIZED,        //
48         DESCRIPTION_NOT_FOUND,                  //
49         DESCRIPTION_CANCEL_REQUESTED,           //
50         DESCRIPTION_ALREADY_EXISTS,             //
51         DESCRIPTION_OUT_OF_RANGE,               //
52         DESCRIPTION_TIMEOUT,                    //
53         DESCRIPTION_INVALID_RESULT_VALUE,       //
54         DESCRIPTION_END
55     };
56 
57 
58     // Definitions for result values used by hio
59 
60     NN_DEFINE_RESULT_FUNC_LM(MakePermanentResult, Result::LEVEL_PERMANENT, Result::MODULE_NN_HIO);
61     NN_DEFINE_RESULT_FUNC_LM(MakeTemporaryResult, Result::LEVEL_TEMPORARY, Result::MODULE_NN_HIO);
62     NN_DEFINE_RESULT_FUNC_LM(MakeStatusResult,    Result::LEVEL_STATUS,    Result::MODULE_NN_HIO);
63 
64     NN_DEFINE_RESULT_CONST_LM(
65         ResultInvalidSection,
66         MakePermanentResult, Result::SUMMARY_INVALID_STATE, DESCRIPTION_INVALID_SELECTION
67     );
68 
69     NN_DEFINE_RESULT_CONST_LM(
70         ResultAlreadyExists,
71         MakePermanentResult, Result::SUMMARY_INVALID_STATE, DESCRIPTION_ALREADY_EXISTS
72     );
73 
74     NN_DEFINE_RESULT_CONST_LM(
75         ResultNotAuthorized,
76         MakePermanentResult, Result::SUMMARY_INVALID_STATE, DESCRIPTION_NOT_AUTHORIZED
77     );
78 
79     NN_DEFINE_RESULT_CONST_LM(
80         ResultTooLarge,
81         MakePermanentResult, Result::SUMMARY_INVALID_ARGUMENT, DESCRIPTION_TOO_LARGE
82     );
83 
84     NN_DEFINE_RESULT_CONST_LM(
85         ResultBusy,
86         MakePermanentResult, Result::SUMMARY_STATUS_CHANGED, DESCRIPTION_BUSY
87     );
88 
89     NN_DEFINE_RESULT_CONST_LM(
90         ResultInvalidHandle,
91         MakePermanentResult, Result::SUMMARY_WRONG_ARGUMENT, DESCRIPTION_INVALID_HANDLE
92     );
93 
94     NN_DEFINE_RESULT_CONST_LM(
95         ResultInvalidPointer,
96         MakePermanentResult, Result::SUMMARY_WRONG_ARGUMENT, DESCRIPTION_INVALID_POINTER
97     );
98 
99     NN_DEFINE_RESULT_CONST_LM(
100         ResultInvalidSize,
101         MakePermanentResult, Result::SUMMARY_WRONG_ARGUMENT, DESCRIPTION_INVALID_SIZE
102     );
103 
104     NN_DEFINE_RESULT_CONST_LM(
105         ResultInvalidEnumValue,
106         MakePermanentResult, Result::SUMMARY_WRONG_ARGUMENT, DESCRIPTION_INVALID_ENUM_VALUE
107     );
108 
109     NN_DEFINE_RESULT_CONST_LM(
110         ResultMisalignedAddress,
111         MakePermanentResult, Result::SUMMARY_WRONG_ARGUMENT, DESCRIPTION_MISALIGNED_ADDRESS
112     );
113 
114     NN_DEFINE_RESULT_CONST_LM(
115         ResultMisalignedSize,
116         MakePermanentResult, Result::SUMMARY_WRONG_ARGUMENT, DESCRIPTION_MISALIGNED_SIZE
117     );
118 
119     NN_DEFINE_RESULT_CONST_LM(
120         ResultCancelRequested,
121         MakePermanentResult, Result::SUMMARY_NOT_SUPPORTED, DESCRIPTION_CANCEL_REQUESTED
122     );
123 
124     NN_DEFINE_RESULT_CONST_LM(
125         ResultAlreadyDone,
126         MakePermanentResult, Result::SUMMARY_NOTHING_HAPPENED, DESCRIPTION_ALREADY_DONE
127     );
128 
129     NN_DEFINE_RESULT_CONST_LM(
130         ResultNotFound,
131         MakePermanentResult, Result::SUMMARY_NOT_FOUND, DESCRIPTION_NOT_FOUND
132     );
133 
134     NN_DEFINE_RESULT_CONST_LM(
135         ResultInvalidAddress,
136         MakeStatusResult, Result::SUMMARY_WRONG_ARGUMENT, DESCRIPTION_INVALID_ADDRESS
137     );
138 
139     NN_DEFINE_RESULT_CONST_LM(
140         ResultInvalidCombination,
141         MakeStatusResult, Result::SUMMARY_WRONG_ARGUMENT, DESCRIPTION_INVALID_COMBINATION
142     );
143 
144     NN_DEFINE_RESULT_CONST_LM(
145         ResultCancelledBusy,
146         MakeTemporaryResult, Result::SUMMARY_CANCELLED, DESCRIPTION_BUSY
147     );
148 
149 
150 } // namespace CTR
151 } // namespace hio
152 } // namespace nn
153 
154 #endif //NN_HIO_CTR_HIO_RESULT_H_
155