82 |
82 |
return CTRL_CMD_REPLY;
|
83 |
83 |
}
|
84 |
84 |
|
|
85 |
CTRL_CMD_DEFINE(test_defer, "test-defer");
|
|
86 |
static void ctrl_test_defer_cb(void *data)
|
|
87 |
{
|
|
88 |
struct ctrl_cmd_def *cd = data;
|
|
89 |
struct ctrl_cmd *cmd = cd->cmd;
|
|
90 |
static int i = 0;
|
|
91 |
|
|
92 |
LOGP(DL1P, LOGL_ERROR, "Test Defer\n");
|
|
93 |
|
|
94 |
if (ctrl_cmd_def_is_zombie(cd)) {
|
|
95 |
LOGP(DL1P, LOGL_ERROR, "Is Zombie\n");
|
|
96 |
return;
|
|
97 |
}
|
|
98 |
|
|
99 |
cmd->reply = talloc_asprintf(cmd, "Test Defer %d", i++);
|
|
100 |
|
|
101 |
ctrl_cmd_def_send(cd);
|
|
102 |
|
|
103 |
return;
|
|
104 |
}
|
|
105 |
static int get_test_defer(struct ctrl_cmd *cmd, void *data)
|
|
106 |
{
|
|
107 |
void *ctx = cmd->node;
|
|
108 |
struct ctrl_cmd_def *cd;
|
|
109 |
static struct osmo_timer_list defer_timer;
|
|
110 |
|
|
111 |
/* geneate a deferred control command */
|
|
112 |
cd = ctrl_cmd_def_make(ctx, cmd, NULL, 10);
|
|
113 |
|
|
114 |
osmo_timer_setup(&defer_timer, ctrl_test_defer_cb, cd);
|
|
115 |
osmo_timer_schedule(&defer_timer, 1, 1);
|
|
116 |
return CTRL_CMD_HANDLED;
|
|
117 |
}
|
|
118 |
|
|
119 |
static int set_test_defer(struct ctrl_cmd *cmd, void *data)
|
|
120 |
{
|
|
121 |
return CTRL_CMD_HANDLED;
|
|
122 |
}
|
|
123 |
|
|
124 |
static int verify_test_defer(struct ctrl_cmd *cmd, const char *value, void *data)
|
|
125 |
{
|
|
126 |
return 0;
|
|
127 |
}
|
|
128 |
|
85 |
129 |
int bts_ctrl_cmds_install(struct gsm_bts *bts)
|
86 |
130 |
{
|
87 |
131 |
int rc = 0;
|
88 |
132 |
|
89 |
133 |
rc |= ctrl_cmd_install(CTRL_NODE_TRX, &cmd_therm_att);
|
90 |
134 |
rc |= ctrl_cmd_install(CTRL_NODE_ROOT, &cmd_oml_alert);
|
|
135 |
rc |= ctrl_cmd_install(CTRL_NODE_ROOT, &cmd_test_defer);
|
91 |
136 |
|
92 |
137 |
return rc;
|
93 |
138 |
}
|