Dear Lin,
Looking once again at your captured I2C traffic, it appears that your PCA9685_read_byte() function requires some modification. The first two bytes are correct, but they need to be followed by a repeated start condition (which is not visible in the captured data) and the I2C address again with the R/W bit high (0xF9).
So you should see:
Setup Write to [0xF8] + ACK
0x00 + ACK
Setup Read to [0xF9] + ACK
0x01 + NAK
Best regards,
Tomas