Example #1
0
/**
 * \brief Initialize client state with default values.
 */
static void struct_term_client_init(struct term_client *client)
{
    client->read_ws = malloc(sizeof(struct waitset));
    assert(client->read_ws != NULL);
    waitset_init(client->read_ws);
    client->write_ws = malloc(sizeof(struct waitset));
    assert(client->write_ws != NULL);
    waitset_init(client->write_ws);
    client->conf_ws = malloc(sizeof(struct waitset));
    assert(client->conf_ws);
    waitset_init(client->conf_ws);
    client->connected = false;
    client->echo = true;
    client->line_mode = true;
    client->non_blocking_read = false;
    client->chars_cb = NULL;
    client->err_cb = default_err_handler,
    client->in_binding = NULL;
    client->out_binding = NULL;
    client->conf_binding = NULL;
    client->readbuf = NULL;
    collections_list_create(&client->input_filters, term_filter_free);
    collections_list_create(&client->output_filters, term_filter_free);
    collections_list_create(&client->echo_filters, term_filter_free);
    client->max_input_filter_id = 0;
    client->max_output_filter_id = 0;
    client->max_echo_filter_id = 0;
    collections_list_create(&client->triggers, term_trigger_free);
    client->max_trigger_id = 0;

    /* add default input filters */
    term_client_add_input_filter(client, term_filter_cr2lf);

    /* add default output filters */
    term_client_add_output_filter(client, term_filter_lf2crlf);

    /* add default echo filters */
    term_client_add_echo_filter(client, term_filter_ctrlhat);

    /* add default triggers */
    /* The user can not remove the kill trigger. */
    term_client_add_trigger_type(client, term_trigger_kill,
                                 TERM_TRIGGER_TYPE_BUILT_IN);
    term_client_add_trigger_type(client, term_trigger_int,
                                 TERM_TRIGGER_TYPE_USER);
}
Example #2
0
/**
 * \brief Add a character trigger.
 *
 * \param client  Terminal client state.
 * \param trigger Trigger to add.
 *
 * \return Trigger ID.
 */
term_trigger_id_t term_client_add_trigger(struct term_client *client,
                                          struct term_trigger trigger)
{
    return term_client_add_trigger_type(client, trigger,
                                        TERM_TRIGGER_TYPE_USER);
}