Ok I added a malloc in the function and freeing the pointers after using them:
char * intToBin(unsigned int k, int maxlen = 0){
int i = 0, j;
if(maxlen == 0){
maxlen = sizeof(k) * 8;
}
unsigned int exponent;
j = maxlen - 1;
char *bin = malloc(maxlen + 1);
while(i <= j){
exponent = 1 << (j - i);
if(k >= exponent){
k -= exponent;
sprintf(bin + i, "%s", "1");
}
else {
sprintf(bin + i, "%s", "0");
}
i++;
}
return bin;
}
...
void transmit(){
char message[64];
char * serial = intToBin(deviceSerial);
char * code = intToBin(nextCode());
char * occurrence = intToBin(getOccurrence());
Serial.println(serial);
Serial.println(code);
Serial.println(occurrence);
Serial.println(buttons);
free(serial);
free(code);
free(occurrence);
//mySwitch.send(message);
}
I come from higher level code, I really try to avoid pointers and stuff.. I need it to work, I'll have time to learn after.