static int devstate_write(struct ast_channel *chan, const char *cmd, char *data, const char *value) { size_t len = strlen("Custom:"); enum ast_device_state state_val; if (strncasecmp(data, "Custom:", len)) { ast_log(LOG_WARNING, "The DEVICE_STATE function can only be used to set 'Custom:' device state!\n"); return -1; } data += len; if (ast_strlen_zero(data)) { ast_log(LOG_WARNING, "DEVICE_STATE function called with no custom device name!\n"); return -1; } state_val = ast_devstate_val(value); if (state_val == AST_DEVICE_UNKNOWN) { ast_log(LOG_ERROR, "DEVICE_STATE function given invalid state value '%s'\n", value); return -1; } ast_db_put(astdb_family, data, value); ast_devstate_changed(state_val, AST_DEVSTATE_CACHABLE, "Custom:%s", data); return 0; }
static void transition_to_empty(struct conference_bridge_user *cbu) { /* Set device state to "not in use" */ ast_devstate_changed(AST_DEVICE_NOT_INUSE, AST_DEVSTATE_CACHABLE, "confbridge:%s", cbu->conference_bridge->name); conf_ended(cbu->conference_bridge); }