Hallo Forum,

eine Funktion soll die aus der TWI empfangenen Bytes zurückgeben. Es ist jedoch keine feste Anzahl an Bytes. Wie macht man sowas schön?
Code:
void i2c_read(uint8_t chip, uint8_t command, uint8_t size){
        
        uint8_t data_received[size];
        
        twi_package_t packet_read = {
            .addr         = command,      // TWI slave memory address data
            .addr_length  = 1,    // TWI slave memory address data size
            .chip         = chip,      // TWI slave bus address
            .buffer       = data_received,        // transfer data destination buffer
            .length       = size                    // transfer data size (bytes)
        };
        // Perform a multi-byte read access then check the result.
        if(twi_master_read(&TWIC, &packet_read) == TWI_SUCCESS){
            //hier sind size mal bytes empfangen und sollen zurückgegeben werden
        }
};
- - - Aktualisiert - - -

Manchmal hat man einen Knoten im Hirn. Ich kann die Variable ja außerhalb deklarieren und nur einen Zeiger mitgeben. Die Funktion füllt dann die externe Variable. Zurückgegeben wird nur der Status.
Code:
status_code_t i2c_read(uint8_t chip, uint8_t command, uint8_t size,uint8_t *puffer)
{
        
        twi_package_t packet_read = {
            .addr         = command,      // TWI slave memory address data
            .addr_length  = 1,    // TWI slave memory address data size
            .chip         = chip,      // TWI slave bus address
            .buffer       = puffer,        // transfer data destination buffer
            .length       = size                    // transfer data size (bytes)
        };
        // Perform a multi-byte read access and send the status.
        return twi_master_read(&TWIC, &packet_read);
};