Ejemplo n.º 1
0
static void rtcfg_conn_recv_announce_new(struct rtcfg_connection *conn,
                                         struct rtskb *rtskb)
{
    struct rtcfg_device       *rtcfg_dev = &device[conn->ifindex];
    struct rtcfg_frm_announce *announce_new;
    int                       packets;


    conn->last_frame = rtskb->time_stamp;

    announce_new = (struct rtcfg_frm_announce *)rtskb->data;

    conn->flags = announce_new->flags;
    if (announce_new->burstrate < conn->burstrate)
        conn->burstrate = announce_new->burstrate;

    rtcfg_next_conn_state(conn, RTCFG_CONN_STAGE_1);

    rtcfg_dev->stations_found++;
    if ((conn->flags & RTCFG_FLAG_READY) != 0)
        rtcfg_dev->stations_ready++;

    if (((conn->flags & RTCFG_FLAG_STAGE_2_DATA) != 0) &&
        (conn->stage2_file != NULL)) {
        packets = conn->burstrate - 1;

        rtcfg_send_stage_2(conn, 1);

        while ((conn->cfg_offs < conn->stage2_file->size) &&
            (packets > 0)) {
            rtcfg_send_stage_2_frag(conn);
            packets--;
        }
    } else {
        rtcfg_send_stage_2(conn, 0);
        conn->flags &= ~RTCFG_FLAG_STAGE_2_DATA;
    }
}
Ejemplo n.º 2
0
static int rtcfg_conn_state_searching(struct rtcfg_connection *conn,
                                      RTCFG_EVENT event_id, void* event_data)
{
    switch (event_id) {
        case RTCFG_FRM_ANNOUNCE_NEW:
            rtcfg_next_conn_state(conn, RTCFG_CONN_1);

            rtcfg_send_stage_2(conn);

            break;

        default:
            RTCFG_DEBUG(1, "RTcfg: unknown event %s for conn %p in %s()\n",
                        rtcfg_event[event_id], conn, __FUNCTION__);
            return -EINVAL;
    }
    return 0;
}