So this is one of the main changes. Probably the names are a bit confusing (I'm open to suggestions). DevicePinGet gets the value from a pin of a particular device (internal, PCF8591,...) by passing an handler to the device. On the other hand GetChannel abstracts the devices so you only pass a the generic channel you want to read from. Channels are indexed on the order of the device initialization.

Example:
1st init: internal adc with 3 channels.
2nd init: external devece ex:pcf8591 with 4 channels.

PIOS_ADC_DevicePinGet(internal_handler,2) will return the value of pin 2 on the internal ADC.
PIOS_ADC_GetChannel(1) will return the value of pin 1 on the internal ADC.
PIOS_ADC_GetChannel(4) will return the value of pin 0 on the pcf8591.