CBMutableCharacteristicで初期化後にvalueの値を変更したいと考えています。

初期化を行っている部分は以下のようにCBMutableCharacteristicの初期値に0x00という値を設定して初期化を行っています。

func peripheralManagerDidUpdateState(_ peripheral: CBPeripheralManager) {

    if peripheral.state == .poweredOn {
        service = CBMutableService(type: CBUUID(string: "1AB20100-1B2B-4571-9508-CF3EFCD7BBAE"), primary: true)

        characteristic = CBMutableCharacteristic(type:  CharacteristicUUID.batteryInformation,properties: .read, value: Data(bytes: [0x00]), permissions: .readable)

        self.service.characteristics = [characteristic]
        self.manager.add(self.service)
    }
}

画面にUISegmentedControlを設置して以下のように値が変更された際にcharacteristicの値を書き換えているのですが、Central側のアプリからreadを行っても初期値で設定した値を取得してしまい書き換わっていないようです。
何が間違っているのでしょうか?

@IBAction func changeBattery(_ sender: UISegmentedControl) {
    switch sender.selectedSegmentIndex {
    case 0:
        characteristic.value = Data(bytes: [0x64])
    case 1:
        characteristic.value = Data(bytes: [0x01])
    case 2:
        characteristic.value = Data(bytes: [0x00])
    default:
        break
    }
}