나는 C를 한 번도 해보지 않았으며 안드로이드 앱에서 페블 워치에 부울을 보내는 가장 좋은 방법을 찾지 못했습니다.PebbleKit을 사용하여 Pebble에 부울을 보냄
문자열이 잘 작동하지만 PebbleDictionary에 addBoolean 메서드가없는 것 같습니다. 해결 방법 주위에 1 또는 0 보낼 addUint8 사용하려고하지만 페블 메시지를 처리하는 데 문제가 있습니다.
PebbleDictionary data = new PebbleDictionary();
if (isGPSFix()){
data.addUint8(GPS_HAS_FIX_KEY, Byte.valueOf("1"));
} else {
data.addUint8(GPS_HAS_FIX_KEY, Byte.valueOf("0"));
}
PebbleKit.sendDataToPebble(app.getContext(), UUID, data);
그리고 내 페블에서
내가 데이터 구조체가 있습니다 :static struct MyData {
uint8_t haveGPS[1];
.... // other stuff ommitted
AppSync sync;
uint8_t sync_buffer[256];
} s_data;
을 그리고 내 sync_tuple_changed 콜백이 같은 비교하려고
여기 내 안드로이드 코드입니다.
static void sync_tuple_changed_callback(const uint32_t key, const Tuple* new_tuple, const Tuple* old_tuple, void* context) {
(void) old_tuple;
switch (key) {
case GPS_HAS_FIX_KEY:
if (memcmp(s_data.haveGPS, new_tuple->value->data, 8) == 0){
memcpy(s_data.haveGPS,new_tuple->value->data, new_tuple->length);
vibes_short_pulse();
}
break;
default:
return;
}
}
시계가 충돌하지 않고 전화기가 떨어지거나 GPS를 수신 할 때 시계가 진동하지 않습니다.
감사합니다. @sarfata. 초기 값 Tuplet에 항목이 누락되었습니다. 나는 memcmp를 아주 좋아하지는 않았지만, 모든 업데이트에 대해 통보 만하면 나는 적어도 진동을 얻고있다. –
이제 비교 논리가 제대로 작동합니다. memcmp 및 memcpy 명령 작업에 대한 내 대답을 참조하십시오. –