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