1 /*
2  *    Copyright (c) 2023, The OpenThread Authors.
3  *    All rights reserved.
4  *
5  *    Redistribution and use in source and binary forms, with or without
6  *    modification, are permitted provided that the following conditions are met:
7  *    1. Redistributions of source code must retain the above copyright
8  *       notice, this list of conditions and the following disclaimer.
9  *    2. Redistributions in binary form must reproduce the above copyright
10  *       notice, this list of conditions and the following disclaimer in the
11  *       documentation and/or other materials provided with the distribution.
12  *    3. Neither the name of the copyright holder nor the
13  *       names of its contributors may be used to endorse or promote products
14  *       derived from this software without specific prior written permission.
15  *
16  *    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
17  *    ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18  *    WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19  *    DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
20  *    DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21  *    (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22  *    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23  *    ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24  *    (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25  *    SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26  */
27 
28 /**
29  * @file
30  *   This file shows how to implement the Radio Spinel vendor hook.
31  */
32 
33 #if OPENTHREAD_SPINEL_CONFIG_VENDOR_HOOK_ENABLE
34 
35 #include OPENTRHEAD_SPINEL_CONFIG_VENDOR_HOOK_HEADER
36 #include "common/log.hpp"
37 #include "lib/platform/exit_code.h"
38 
39 namespace ot {
40 namespace Spinel {
41 
VendorHandleValueIs(spinel_prop_key_t aPropKey)42 otError RadioSpinel::VendorHandleValueIs(spinel_prop_key_t aPropKey)
43 {
44     otError error = OT_ERROR_NONE;
45 
46     switch (aPropKey)
47     {
48         // TODO: Implement your property get handlers here.
49         //
50         // Get handler should retrieve the property value and then encode and write the
51         // value into the NCP buffer. If the "get" operation itself fails, handler should
52         // write a `LAST_STATUS` with the error status into the NCP buffer. `OT_ERROR_NO_BUFS`
53         // should be returned if NCP buffer is full and response cannot be written.
54     default:
55         error = OT_ERROR_NOT_FOUND;
56         break;
57     }
58 exit:
59     return error;
60 }
61 
62 } // namespace Spinel
63 } // namespace ot
64 
65 extern ot::Spinel::RadioSpinel &GetRadioSpinel(void);
66 
67 #endif // OPENTHREAD_SPINEL_CONFIG_VENDOR_HOOK_ENABLE
68