Multi_16.cpp

Committer:
evgeniik
Date:
2020-07-17
Revision:
0:72ebae234e48

File content as of revision 0:72ebae234e48:

 #include "Multi_16.h"
    
    Mux::Mux(PinName s0Pin, PinName s1Pin, PinName s2Pin, PinName s3Pin, PinName enPin):
    _s0(s0Pin), _s1(s1Pin), _s2(s2Pin), _s3(s3Pin), _en(enPin)
    {
    }
    
    void Mux::set_channel(int n)
    {        
        if (n < 16) {
            bool state[4];
            state[3] = 0b00001000 & n;  _s3 = state[3];
            state[2] = 0b00000100 & n;  _s2 = state[2];
            state[1] = 0b00000010 & n;  _s1 = state[1];
            state[0] = 0b00000001 & n;  _s0 = state[0];
            //printf("s0 = %d, s1 = %d, s2 = %d, s3 = %d\n", state[0], state[1], state[2], state[3]);
            open();
        }
        else{
            printf("Out of range.     Mux is closed \n");
            close();
        }
    }
    
    void Mux::open(){
        _en = false;
    }
    
    void Mux::close(){
        _en = true;
    }