43 lines
1.0 KiB
C
43 lines
1.0 KiB
C
#include "binding.h"
|
|
#include "signal_processing.h"
|
|
|
|
#include <stdio.h>
|
|
|
|
static const char * BINDING_HW_STRING = "HW";
|
|
static const char * BINDING_SW_STRING = "SW";
|
|
static const char * UNKOWN_STRING = "UNKOWN_STRING";
|
|
|
|
void binding_from_value( uint32_t value, uint32_t * binding ) {
|
|
for ( uint32_t i = 0; i < TASK_COUNT; ++i ) {
|
|
binding[ i ] = value & 1;
|
|
value >>= 1;
|
|
}
|
|
}
|
|
|
|
int binding_get_channel_binding( const uint32_t * connections,
|
|
const uint32_t * binding,
|
|
uint32_t n,
|
|
DataChannelBinding * channel_binding ) {
|
|
|
|
if ( n >= CHANNEL_COUNT ) {
|
|
printf( "ERROR in %s: %" PRIu32 " not a valid channel number\n",
|
|
__func__, n );
|
|
return 1;
|
|
}
|
|
|
|
channel_binding->sink = binding[ n ];
|
|
channel_binding->source = binding[ connections[ n ] ];
|
|
|
|
return 0;
|
|
}
|
|
|
|
const char * binding_to_string( uint32_t binding ) {
|
|
switch ( binding ) {
|
|
case BINDING_SW: return BINDING_SW_STRING;
|
|
case BINDING_HW: return BINDING_HW_STRING;
|
|
}
|
|
|
|
return UNKOWN_STRING;
|
|
}
|
|
|