As I understand it, the github response refers to the OpenCat codebase for the Bittle robot but the Bittle X robot uses the OpenCat32 codebase. My Bittle X console output seems to match the output for OpenCat32 (e.g., the string "Calibrated Zero Position" only appears the OpenCat32 codebase). So my analysis here is for the OpenCat32 codebase. If I'm offbase here, please let me know. However I note that not all the output from OpenCat32 appears in the cosole so there's some discrepancy..
First I do a volume test:
send the play melodycomnand ('o1') for the baseline volume
set the volume to 3 ('b3')
send melody command again with no difference in volume
Then I do a toggle mute
send the toggle mute command :('b')
send melody command ('o1') and the melody plays.
send the toggle mute command :('b')
send melody command ('o1') and the melody still plays
The codebase I have says that setup calls initiRobot
void setup() {
//...
initRobot();
}
The function initRobot reads the value from EEPROM memory and then calls i2cEepromSetup
I have more analysis but the test results indicate the birthmark has been changed. The problem is that code also says that the birthmark is rewritten to the default value BIRTHMARK by the function initRobot after the call to i2cEepromSetup
void initRobot() {
//...
i2cEepromSetup();
//...
i2c_eeprom_write_byte(EEPROM_BIRTHMARK_ADDRESS, BIRTHMARK); // finish the test and mark the board as initialized
//...
}
This update happens unconditionally.
I have more analysis around the soundState value and the birthmark value but I would rather wait until I know if I have to take the plunge and update the firmware.
The only other marker I have is the value of DATE in OpenCat32.h:
Also note the image for the serial protocol specifies that the ASCII beep command requires a note and duration while the binary command does not. The code contradicts this.
Please upgrade to the newest firmware and use the following command:
https://bittle-x.petoi.com/2-open-the-box#adjust-the-buzzer-volume