5 #include <libamb-client.h>
6 #include <libamb-objects.h>
8 static void test_get_object_list()
14 fprintf(stdout, "\n== %s ==\n", __func__);
16 ret = amb_get_object_list(&objlist);
18 printf("Fail to amb_get_object_list()\n");
22 fprintf(stdout, " - count: %u\n", g_list_length(objlist));
23 for (item = objlist; item != NULL; item = item->next) {
24 gchar *obj = item->data;
25 fprintf(stdout, "%s ", obj);
29 amb_release_object_list(objlist);
32 static void test_get_property_all(const char *obj_name)
38 fprintf(stdout, "\n== %s ==\n", __func__);
39 ret = amb_get_property_all(&retlist, obj_name);
41 printf("Fail to get_property_all()\n");
45 fprintf(stdout, " - count: %u\n", g_list_length(retlist));
46 for (item = retlist; item != NULL; item = item->next) {
47 GVariant *i = item->data;
48 gchar *s = g_variant_print(i, TRUE);
53 amb_release_property_all(retlist);
56 static void test_get_property_all_with_zone(const char *obj_name, int zone)
62 fprintf(stdout, "\n== %s ==\n", __func__);
63 r = amb_get_property_all_with_zone(&ret, obj_name, zone);
65 fprintf(stderr, "Fail to get_property_all_with_zone(): %s, %d\n", obj_name, zone);
69 s = g_variant_print(ret, TRUE);
74 amb_release_property_all_with_zone(ret);
77 static void test_set_property(const char *obj_name, const char *prop_name, int zone, GVariant *value)
83 fprintf(stdout, "== %s ==\n", __func__);
85 if (amb_set_property(obj_name, prop_name, zone, value) != 0) {
86 fprintf(stderr, "Fail to set_property()\nn");
90 r = amb_get_property_all_with_zone(&ret, obj_name, zone);
92 fprintf(stderr, "Fail to get_property_all_with_zone(): %s, %d\n", obj_name, zone);
96 s = g_variant_print(ret, TRUE);
100 amb_release_property_all_with_zone(ret);
103 static void test_samsungcan_GearboxPosition()
105 struct GearboxPositionDisplayType *p;
106 int ret = amb_get_GearboxPositionDisplay_with_zone(&p, None);
108 fprintf(stderr, "Fail to %s\n", __func__);
112 fprintf(stderr, " == GearboxPosition ==\n");
113 fprintf(stderr, " Time: %f\n", p->Time);
114 fprintf(stderr, " Zone: %d\n", p->Zone);
115 fprintf(stderr, " ValueSequence: %d\n", p->ValueSequence);
116 fprintf(stderr, " Value: ");
119 fprintf(stderr, "PARKING\n");
122 fprintf(stderr, "DRIVE\n");
125 fprintf(stderr, "NEUTRAL\n");
128 fprintf(stderr, "REVERSE\n");
131 fprintf(stderr, "%u (Error)\n", p->Value);
139 static void test_samsungcan_VehicleSpeed()
141 struct VehicleSpeedType *p;
142 int ret = amb_get_VehicleSpeed_with_zone(&p, None);
144 fprintf(stderr, "Fail to %s\n", __func__);
147 fprintf(stderr, " == VehicleSpeed ==\n");
148 fprintf(stderr, " Zone: %d\n", p->Zone);
149 fprintf(stderr, " Value: %d\n", p->Value);
150 fprintf(stderr, " ValueSequence: %d\n", p->ValueSequence);
151 fprintf(stderr, " Time: %f\n", p->Time);
157 static void test_LampHazardLight()
159 struct LampHazardLightType *p;
160 int ret = amb_get_LampHazardLight_with_zone(&p, None);
162 fprintf(stderr, "Fail to %s\n", __func__);
165 fprintf(stderr, " == LampHazardLight ==\n");
166 fprintf(stderr, " Zone: %d\n", p->Zone);
167 fprintf(stderr, " Value: %s\n", (p->Value) ? "Set" : "None");
168 fprintf(stderr, " ValueSequence: %d\n", p->ValueSequence);
169 fprintf(stderr, " Time: %f\n", p->Time);
174 static void LampHazardLight_handler(const gchar *objname, gpointer data, void *user_data)
176 struct LampHazardLightType retdata;
181 amb_convert_LampHazardLightType(data, &retdata);
183 fprintf(stderr, " == LampHazardLight ==\n");
184 fprintf(stderr, " Zone: %d\n", retdata.Zone);
185 fprintf(stderr, " Value: %s\n", (retdata.Value) ? "Set" : "None");
186 fprintf(stderr, " ValueSequence: %d\n", retdata.ValueSequence);
187 fprintf(stderr, " Time: %f\n", retdata.Time);
190 static void test_WarningSafetybelts()
192 struct WarningSafetybeltsType *p;
193 int ret = amb_get_WarningSafetybelts_with_zone(&p, None);
195 fprintf(stderr, "Fail to %s\n", __func__);
198 fprintf(stderr, " == WarningSafetybelt ==\n");
199 fprintf(stderr, " Zone: %d\n", p->Zone);
200 fprintf(stderr, " Value: %s\n", (p->Value) ? "Set" : "None");
201 fprintf(stderr, " ValueSequence: %d\n", p->ValueSequence);
202 fprintf(stderr, " Time: %f\n", p->Time);
207 static void test_samsungcan_VehicleOdometer()
209 struct VehicleOdometerType *p;
210 int ret = amb_get_VehicleOdometer_with_zone(&p, None);
212 fprintf(stderr, "Fail to %s\n", __func__);
215 fprintf(stderr, " == VehicleOdometer ==\n");
216 fprintf(stderr, " Zone: %d\n", p->Zone);
217 fprintf(stderr, " Value: %d\n", p->Value);
218 fprintf(stderr, " ValueSequence: %d\n", p->ValueSequence);
219 fprintf(stderr, " Time: %f\n", p->Time);
225 static void test_TPMS_FL()
227 struct TPMS_FLType *p;
228 int ret = amb_get_TPMS_FL_with_zone(&p, None);
230 fprintf(stderr, "Fail to %s\n", __func__);
233 fprintf(stderr, " == TPMS_FL ==\n");
234 fprintf(stderr, " Zone: %d\n", p->Zone);
235 fprintf(stderr, " Value: %u\n", p->Value);
236 fprintf(stderr, " ValueSequence: %d\n", p->ValueSequence);
237 fprintf(stderr, " Time: %f\n", p->Time);
242 static void test_FuelGage()
244 struct FuelGageType *p;
245 int ret = amb_get_FuelGage_with_zone(&p, None);
247 fprintf(stderr, "Fail to %s\n", __func__);
250 fprintf(stderr, " == FuelGage ==\n");
251 fprintf(stderr, " Zone: %d\n", p->Zone);
252 fprintf(stderr, " Value: %u\n", p->Value);
253 fprintf(stderr, " ValueSequence: %d\n", p->ValueSequence);
254 fprintf(stderr, " Time: %f\n", p->Time);
259 static void test_OutsideTemperature()
261 struct OutsideTemperatureType *p;
262 int ret = amb_get_OutsideTemperature_with_zone(&p, None);
264 fprintf(stderr, "Fail to %s\n", __func__);
267 fprintf(stderr, " == OutsideTemperature ==\n");
268 fprintf(stderr, " Zone: %d\n", p->Zone);
269 fprintf(stderr, " Value: %f\n", p->Value);
270 fprintf(stderr, " ValueSequence: %d\n", p->ValueSequence);
271 fprintf(stderr, " Time: %f\n", p->Time);
276 static void test_FR_KeyEvent01()
278 struct FR_KeyEvent01Type *p;
279 int ret = amb_get_FR_KeyEvent01_with_zone(&p, None);
281 fprintf(stderr, "Fail to %s\n", __func__);
284 fprintf(stderr, " == FR_KeyEvent01 ==\n");
285 fprintf(stderr, " Zone: %d\n", p->Zone);
286 fprintf(stderr, " Value: %u\n", p->Value);
287 fprintf(stderr, " ValueSequence: %d\n", p->ValueSequence);
288 fprintf(stderr, " Time: %f\n", p->Time);
293 static void test_FR_KeyEvent02()
295 struct FR_KeyEvent02Type *p;
296 int ret = amb_get_FR_KeyEvent02_with_zone(&p, None);
298 fprintf(stderr, "Fail to %s\n", __func__);
301 fprintf(stderr, " == FR_KeyEvent02 ==\n");
302 fprintf(stderr, " Zone: %d\n", p->Zone);
303 fprintf(stderr, " Value: %u\n", p->Value);
304 fprintf(stderr, " ValueSequence: %d\n", p->ValueSequence);
305 fprintf(stderr, " Time: %f\n", p->Time);
310 /*****************************************************************************/
312 struct user_data_test {
317 struct user_data_test *udata;
318 struct user_data_test *udata2;
320 static int convert_VehicleOdometerType(GVariant *data, struct VehicleOdometerType *retdata)
327 gdata = (GVariant *)data;
330 g_variant_get(gdata, "a{sv}", &iter);
331 while(g_variant_iter_loop(iter, "{sv}", &key, &value)) {
332 if (!g_strcmp0(key, "Zone")) {
333 g_variant_get(value, "i", &retdata->Zone);
334 fprintf(stderr, "%s: %d\n", key, retdata->Zone);
335 } else if (!g_strcmp0(key, "ValueSequence") || !g_strcmp0(key, "ValueSequence")) {
336 g_variant_get(value, "i", &retdata->ValueSequence);
337 fprintf(stderr, "%s: %d\n", key, retdata->ValueSequence);
338 } else if (!g_strcmp0(key, "Time")) {
339 g_variant_get(value, "d", &retdata->Time);
340 fprintf(stderr, "%s: %f\n", key, retdata->Time);
341 } else if (!g_strcmp0(key, "Value") || !g_strcmp0(key, "Vaule")) {
342 g_variant_get(value, "u", &retdata->Value);
343 fprintf(stderr, "%s: %d\n", key, retdata->Value);
346 g_variant_iter_free(iter);
350 static void VehicleOdometer_handler(const gchar *objname, gpointer data, void *user_data)
352 struct VehicleOdometerType retdata;
353 struct user_data_test *udata = (struct user_data_test *)user_data;
355 fprintf(stderr, "== User Data ==\n");
356 fprintf(stderr, " value: %d\n", udata->value);
357 fprintf(stderr, " name: %s\n", udata->name);
363 convert_VehicleOdometerType(data, &retdata);
366 static gboolean timer_callback(gpointer d)
375 static void test_VehicleOdometer_listen()
382 udata = g_new0(struct user_data_test, 1);
384 udata->name = strdup("Test Name");
386 rc = amb_register_property_changed_handler("VehicleOdometer",
388 (AMB_PROPERTY_CHANGED_CALLBACK)VehicleOdometer_handler,
389 (void *)udata, &id1);
391 fprintf(stderr, "Fail to amb_register_property_changed_handler(): %s\n", "VehicleOdometer");
395 udata2 = g_new0(struct user_data_test, 1);
397 udata2->name = strdup("Test Name2");
398 rc = amb_register_property_changed_handler("VehicleOdometer",
400 (AMB_PROPERTY_CHANGED_CALLBACK)VehicleOdometer_handler,
401 (void *)udata2, &id2);
403 fprintf(stderr, "Fail to amb_register_property_changed_handler(): %s\n", "VehicleOdometer");
406 fprintf(stderr, "id1: %u, id2: %u\n", id1, id2);
409 rc = amb_unregister_property_changed_handler("VehicleOdometer", 0, id1);
411 fprintf(stderr, "Fail to amb_unregister_property_changed_handler(): %u\n", id1);
416 // g_timeout_add_seconds(10, timer_callback, "VehicleOdometer");
417 loop = g_main_loop_new(NULL, FALSE);
418 g_main_loop_run(loop);
420 g_main_loop_unref(loop);
423 void test_CheckSeatHeaterL()
425 struct CheckSeatHeaterLType *p;
426 int ret = amb_get_CheckSeatHeaterL_with_zone(&p, 0);
428 fprintf(stderr, "Fail to %s\n", __func__);
431 fprintf(stderr, "Zone: %d\n", p->Zone);
432 fprintf(stderr, "Value: %d\n", p->Value);
433 fprintf(stderr, "ValueSequence: %d\n", p->ValueSequence);
434 fprintf(stderr, "Time: %f\n", p->Time);
440 static void test_set_CheckSeatHeaterL(int value)
444 rc = amb_set_CheckSeatHeaterL_with_zone(value, 0);
446 fprintf(stderr, "Fail to amb_set_CheckSeatHeaterL_with_zone(): %d\n", rc);
449 test_CheckSeatHeaterL();
454 test_set_CheckSeatHeaterL(1);
455 test_set_CheckSeatHeaterL(2);
457 test_VehicleOdometer_listen();
459 test_FR_KeyEvent01();
460 test_FR_KeyEvent02();
462 test_get_object_list();
464 // cansend vcan0 104#3C.00.00.00.00.00.00.00
467 // cansend vcan0 104#3C.00.00.00.00.00.00.00
470 // cansend vcan0 206#00.00.00.00.01.00.00.00
471 test_LampHazardLight();
473 // cansend vcan0 206#01.00.00.00.00.00.00.00
474 test_WarningSafetybelts();
475 test_WarningSafetybelts_listen();
476 test_samsungcan_VehicleOdometer();
477 test_samsungcan_VehicleSpeed();
478 test_samsungcan_GearboxPosition();
480 #ifdef EXAMPLE_PLUGIN
481 test_get_property_all("ClimateControl");
482 test_get_property_all("VehicleSpeed");
484 test_get_property_all_with_zone("ClimateControl", 5);
486 test_set_property("ClimateControl", "AirConditioning", 5, g_variant_new("b", TRUE));
488 test_samsungcan_GearboxPosition();