Beispiel #1
0
bool peer_id_is_allocated(pm_peer_id_t peer_id)
{
    if (peer_id < PM_PEER_ID_N_AVAILABLE_IDS)
    {
        return pm_mutex_lock_status_get(m_pi.active_peer_ids, peer_id);
    }
    return false;
}
Beispiel #2
0
void pm_buffer_release(pm_buffer_t * p_buffer, uint8_t id)
{
    if (    BUFFER_IS_VALID(p_buffer)
       &&  (id != BUFFER_INVALID_ID)
       &&   pm_mutex_lock_status_get(p_buffer->p_mutex, id))
    {
        pm_mutex_unlock(p_buffer->p_mutex, id);
    }
}
Beispiel #3
0
uint32_t peer_id_n_ids(void)
{
    uint32_t n_ids = 0;

    for (pm_peer_id_t i = 0; i < PM_PEER_ID_N_AVAILABLE_IDS; i++)
    {
        n_ids += pm_mutex_lock_status_get(m_pi.active_peer_ids, i);
    }

    return n_ids;
}
Beispiel #4
0
pm_peer_id_t next_id_get(pm_peer_id_t prev_peer_id, uint8_t * mutex_group)
{
    pm_peer_id_t i = (prev_peer_id == PM_PEER_ID_INVALID) ? 0 : (prev_peer_id + 1);
    for (; i < PM_PEER_ID_N_AVAILABLE_IDS; i++)
    {
        if (pm_mutex_lock_status_get(mutex_group, i))
        {
            return i;
        }
    }

    return PM_PEER_ID_INVALID;
}
Beispiel #5
0
uint8_t * pm_buffer_ptr_get(pm_buffer_t * p_buffer, uint8_t id)
{
    if (!BUFFER_IS_VALID(p_buffer))
    {
        return ( NULL );
    }

    if ( (id != BUFFER_INVALID_ID)
    &&   pm_mutex_lock_status_get(p_buffer->p_mutex, id) )
    {
        return ( &p_buffer->p_memory[id*p_buffer->block_size] );
    }
    else
    {
        return ( NULL );
    }
}