AJ_Status AJSVC_PropertyStore_SaveAll() { AJ_Status status = AJ_OK; void* buf = NULL; uint16_t size = 0; uint16_t entry; int8_t langIndex = AJSVC_PROPERTY_STORE_NO_LANGUAGE_INDEX; for (; langIndex < AJSVC_PROPERTY_STORE_NUMBER_OF_LANGUAGES; langIndex++) { AJSVC_PropertyStoreFieldIndices fieldIndex = 0; for (; fieldIndex < AJSVC_PROPERTY_STORE_NUMBER_OF_RUNTIME_KEYS; fieldIndex++) { if (propertyStoreRuntimeValues[fieldIndex].value == NULL || !propertyStoreProperties[fieldIndex].mode0Write || (langIndex != AJSVC_PROPERTY_STORE_NO_LANGUAGE_INDEX && !propertyStoreProperties[fieldIndex].mode2MultiLng)) { continue; } buf = propertyStoreRuntimeValues[fieldIndex].value[langIndex]; if (buf) { size = propertyStoreRuntimeValues[fieldIndex].size; entry = (int)fieldIndex + (int)langIndex * (int)AJSVC_PROPERTY_STORE_NUMBER_OF_RUNTIME_KEYS; status = PropertyStore_WriteConfig(AJ_PROPERTIES_NV_ID_BEGIN + entry, buf, size, "w"); AJ_InfoPrintf(("nvram write fieldIndex=%d [%s] langIndex=%d [%s] entry=%d val=%s size=%u status=%s\n", (int)fieldIndex, propertyStoreProperties[fieldIndex].keyName, (int)langIndex, propertyStoreDefaultLanguages[langIndex], (int)entry, propertyStoreRuntimeValues[fieldIndex].value[langIndex], (int)size, AJ_StatusText(status))); } } } AJ_AboutSetShouldAnnounce(); // Set flag for sending an updated Announcement return status; }
AJ_Status AJS_CP_Init(AJ_Object* cpObjects) { AJ_Status status; AJ_Object* w = cpObjects; while (w->path) { ++w; } w->path = "/NotificationActions"; w->interfaces = NotificationActionInterfaces; /* * The control panel object is the only one that gets announced */ cpObjects[0].interfaces = ControlPanelInterfaces; cpObjects[0].flags = AJ_OBJ_FLAG_ANNOUNCED; status = AJCPS_Start(cpObjects, CPSMessageHandler, CallInvolvesWidget, SignalInvolvesWidget, InvolvesRootWidget); if (status == AJ_OK) { AJ_WarnPrintf(("Control panel service succesfully initialized\n")); objectList = cpObjects; AJ_AboutSetShouldAnnounce(); #ifndef NDEBUG if (dbgAJS) { AJ_PrintXML(cpObjects); } #endif } return status; }
static AJ_Status AJApp_DisconnectHandler(AJ_BusAttachment* busAttachment, uint8_t restart) { AJ_Status status = AJ_OK; if (restart) { AJ_BusUnbindSession(busAttachment, AJ_ABOUT_SERVICE_PORT); } AJ_AboutSetShouldAnnounce(); currentServicesInitializationState = nextServicesInitializationState = INIT_START; return status; }
static AJ_Status AJApp_DisconnectHandler(AJ_BusAttachment* busAttachment, uint8_t restart) { AJ_Status status = AJ_OK; if (restart) { AJ_BusAdvertiseName(busAttachment, AJ_GetUniqueName(busAttachment), AJ_TRANSPORT_ANY, AJ_BUS_STOP_ADVERTISING, 0); AJ_BusUnbindSession(busAttachment, AJ_ABOUT_SERVICE_PORT); } AJ_AboutSetShouldAnnounce(); currentServicesInitializationState = nextServicesInitializationState = INIT_START; status = AJSVC_DisconnectHandler(busAttachment); return status; }
AJ_Status AJCFG_ResetConfigurationsHandler(AJ_Message* msg) { AJ_Status status = AJ_OK; AJ_Arg array; AJ_Message reply; char* key; char* language; int8_t langIndex = AJSVC_PROPERTY_STORE_ERROR_LANGUAGE_INDEX; uint8_t numOfDeletedItems = 0; uint8_t errorReply = FALSE; AJ_InfoPrintf(("Handling ResetConfigurations request\n")); status = AJ_UnmarshalArgs(msg, "s", &language); if (status != AJ_OK) { goto Exit; } AJ_InfoPrintf(("Lang=%s\n", language)); errorReply = !AJSVC_IsLanguageSupported(msg, &reply, language, &langIndex); if (!errorReply) { status = AJ_UnmarshalContainer(msg, &array, AJ_ARG_ARRAY); if (status != AJ_OK) { goto Exit; } while (1) { status = AJ_UnmarshalArgs(msg, "s", &key); if (status != AJ_OK) { break; } AJ_InfoPrintf(("Key=%s\n", key)); status = AJSVC_PropertyStore_Reset(key, langIndex); if (status == AJ_OK) { numOfDeletedItems++; } else if (status == AJ_ERR_INVALID) { if (!errorReply) { AJ_MarshalErrorMsg(msg, &reply, AJSVC_ERROR_INVALID_VALUE); errorReply = TRUE; } } else if (status == AJ_ERR_FAILURE) { if (!errorReply) { AJ_MarshalErrorMsg(msg, &reply, AJSVC_ERROR_UPDATE_NOT_ALLOWED); errorReply = TRUE; } } } if (status != AJ_OK && status != AJ_ERR_NO_MORE) { goto Exit; } status = AJ_UnmarshalCloseContainer(msg, &array); if (status != AJ_OK) { goto Exit; } } if (!errorReply) { status = AJ_MarshalReplyMsg(msg, &reply); if (status != AJ_OK) { goto Exit; } } status = AJ_DeliverMsg(&reply); if (status != AJ_OK) { goto Exit; } Exit: if (numOfDeletedItems) { if (errorReply) { AJSVC_PropertyStore_LoadAll(); // Discard partial successful deletions } else { AJSVC_PropertyStore_SaveAll(); AJ_AboutSetShouldAnnounce(); } } return status; }
static AJ_Status Restart(void) { AJ_WarnPrintf(("Restart\n")); AJ_AboutSetShouldAnnounce(); return AJ_ERR_RESTART; }
static AJ_Status Restart() { AJ_InfoPrintf(("GOT RESTART REQUEST\n")); AJ_AboutSetShouldAnnounce(); // Set flag for sending an updated Announcement return AJ_ERR_RESTART_APP; // Force disconnect of AJ and services and reconnection of WiFi on restart of app }