1 /*
2  * Copyright (c) 2020 Intel Corporation
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 
7 #include <zephyr/ztest.h>
8 #include <zephyr/device.h>
9 #include "abstract_driver.h"
10 
11 #define MY_DRIVER_A	"my_driver_A"
12 #define MY_DRIVER_B	"my_driver_B"
13 
14 /* define individual driver A */
my_driver_A_do_this(const struct device * device,int foo,int bar)15 static int my_driver_A_do_this(const struct device *device, int foo, int bar)
16 {
17 	return foo + bar;
18 }
19 
my_driver_A_do_that(const struct device * device,unsigned int * baz)20 static void my_driver_A_do_that(const struct device *device,
21 				unsigned int *baz)
22 {
23 	*baz = 1;
24 }
25 
26 static struct subsystem_api my_driver_A_api_funcs = {
27 	.do_this = my_driver_A_do_this,
28 	.do_that = my_driver_A_do_that
29 };
30 
common_driver_init(const struct device * dev)31 int common_driver_init(const struct device *dev)
32 {
33 	return 0;
34 }
35 
36 /* define individual driver B */
my_driver_B_do_this(const struct device * device,int foo,int bar)37 static int my_driver_B_do_this(const struct device *device, int foo, int bar)
38 {
39 	return foo - bar;
40 }
41 
my_driver_B_do_that(const struct device * device,unsigned int * baz)42 static void my_driver_B_do_that(const struct device *device,
43 				unsigned int *baz)
44 {
45 	*baz = 2;
46 }
47 
48 static struct subsystem_api my_driver_B_api_funcs = {
49 	.do_this = my_driver_B_do_this,
50 	.do_that = my_driver_B_do_that
51 };
52 
53 /**
54  * @cond INTERNAL_HIDDEN
55  */
56 DEVICE_DEFINE(my_driver_A, MY_DRIVER_A, &common_driver_init,
57 		NULL, NULL, NULL,
58 		POST_KERNEL, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT,
59 		&my_driver_A_api_funcs);
60 
61 DEVICE_DEFINE(my_driver_B, MY_DRIVER_B, &common_driver_init,
62 		NULL, NULL, NULL,
63 		POST_KERNEL, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT,
64 		&my_driver_B_api_funcs);
65 
66 /**
67  * @endcond
68  */
69