pwm period is now 200us instead of the default 20ms veml6040 config is now AF_BIT | TRIG_BIT

Dependencies:   mbed MMA8451Q USBDevice WakeUp vt100

Fork of afero_node_suntory_2017_06_15 by Orefatoi

util/USPool.hpp

Committer:
Rhyme
Date:
2017-10-18
Revision:
23:e4d2316383a1
Parent:
14:b205267fa5f6

File content as of revision 23:e4d2316383a1:

#ifndef _ULTRA_SIMPLE_POOL_
#define _ULTRA_SIMPLE_POOL_

template<typename T> class USPool
{
    private: bool pool_usage[];
    private: T pool[];
    private: int len;
   public: USPool(T init, int _size)
    {
        pool_usage = new bool[_size];
        pool = new pool[_size];
        len = _size;
        for(int i=0; i<len; ++i)
        {
            pool_usage[i] = false;
            pool[i] = init;
        }
    }
    public: ~USPool()
    {
        delete[] pool;
        pool = NULL;
        delete[] pool_usage;
        pool_usage = NULL;
    }
    public: T obtain(T unavail)
    {
        T ret = unavail;
        for(int i=0; i<len; ++i)
        {
            if(pool_usage[i] == false)
            {
                pool_usage[i] = true;
                ret = pool[i];
                break;
            }
        }
        return ret;
    }
    public: void release(T *released)
    {
        for(int i=0; i<len; ++i)
        {
            if(pool[i] == released)
            {
                pool_usage[i] = false;
            }
        }
    }
};

#endif //_ULTRA_SIMPLE_POOL_