PresenceModelAPIPtr FriendAPI::getPresenceModel() const { CORE_MUTEX FBLOG_DEBUG("FriendAPI::getPresenceModel", "this=" << this); const LinphonePresenceModel *model = linphone_friend_get_presence_model(mFriend); return getFactory()->getPresenceModel(model); }
static void simple(void) { LinphoneCoreManager* marie = linphone_core_manager_new("marie_rc"); LinphoneCoreManager* pauline = linphone_core_manager_new(transport_supported(LinphoneTransportTls) ? "pauline_rc" : "pauline_tcp_rc"); LinphonePresenceModel *pauline_presence = linphone_presence_model_new_with_activity(LinphonePresenceActivityDinner, NULL); LinphoneFriend* f = linphone_core_create_friend_with_address(marie->lc, get_identity(pauline)); LinphonePresenceActivity *activity = NULL; lp_config_set_int(marie->lc->config, "sip", "subscribe_expires", 40); linphone_core_set_user_agent(pauline->lc, "full-presence-support", NULL); linphone_core_set_user_agent(marie->lc, "full-presence-support", NULL); enable_publish(pauline, TRUE); linphone_friend_enable_subscribes(f, TRUE); linphone_friend_set_inc_subscribe_policy(f,LinphoneSPAccept); /* Accept incoming subscription request for this friend*/ linphone_core_add_friend(marie->lc, f); linphone_core_set_presence_model(pauline->lc, pauline_presence); BC_ASSERT_TRUE(wait_for(marie->lc,pauline->lc,&marie->stat.number_of_LinphonePresenceActivityDinner,1)); activity = linphone_presence_model_get_activity(linphone_friend_get_presence_model(f)); if (BC_ASSERT_PTR_NOT_NULL(activity)) { BC_ASSERT_EQUAL(linphone_presence_activity_get_type(activity), LinphonePresenceActivityDinner, int, "%d"); } linphone_core_manager_destroy(marie); linphone_core_manager_destroy(pauline); }
void notify_presence_received(LinphoneCore *lc, LinphoneFriend * lf) { stats* counters; LinphonePresenceActivity *activity = NULL; char* from=linphone_address_as_string(linphone_friend_get_address(lf)); ms_message("New Notify request from [%s] ",from); ms_free(from); counters = get_stats(lc); counters->number_of_NotifyReceived++; counters->last_received_presence = linphone_friend_get_presence_model(lf); activity = linphone_presence_model_get_activity(counters->last_received_presence); switch (linphone_presence_activity_get_type(activity)) { case LinphonePresenceActivityOffline: counters->number_of_LinphonePresenceActivityOffline++; break; case LinphonePresenceActivityOnline: counters->number_of_LinphonePresenceActivityOnline++; break; case LinphonePresenceActivityAppointment: counters->number_of_LinphonePresenceActivityAppointment++; break; case LinphonePresenceActivityAway: counters->number_of_LinphonePresenceActivityAway++; break; case LinphonePresenceActivityBreakfast: counters->number_of_LinphonePresenceActivityBreakfast++; break; case LinphonePresenceActivityBusy: counters->number_of_LinphonePresenceActivityBusy++; break; case LinphonePresenceActivityDinner: counters->number_of_LinphonePresenceActivityDinner++; break; case LinphonePresenceActivityHoliday: counters->number_of_LinphonePresenceActivityHoliday++; break; case LinphonePresenceActivityInTransit: counters->number_of_LinphonePresenceActivityInTransit++; break; case LinphonePresenceActivityLookingForWork: counters->number_of_LinphonePresenceActivityLookingForWork++; break; case LinphonePresenceActivityLunch: counters->number_of_LinphonePresenceActivityLunch++; break; case LinphonePresenceActivityMeal: counters->number_of_LinphonePresenceActivityMeal++; break; case LinphonePresenceActivityMeeting: counters->number_of_LinphonePresenceActivityMeeting++; break; case LinphonePresenceActivityOnThePhone: counters->number_of_LinphonePresenceActivityOnThePhone++; break; case LinphonePresenceActivityOther: counters->number_of_LinphonePresenceActivityOther++; break; case LinphonePresenceActivityPerformance: counters->number_of_LinphonePresenceActivityPerformance++; break; case LinphonePresenceActivityPermanentAbsence: counters->number_of_LinphonePresenceActivityPermanentAbsence++; break; case LinphonePresenceActivityPlaying: counters->number_of_LinphonePresenceActivityPlaying++; break; case LinphonePresenceActivityPresentation: counters->number_of_LinphonePresenceActivityPresentation++; break; case LinphonePresenceActivityShopping: counters->number_of_LinphonePresenceActivityShopping++; break; case LinphonePresenceActivitySleeping: counters->number_of_LinphonePresenceActivitySleeping++; break; case LinphonePresenceActivitySpectator: counters->number_of_LinphonePresenceActivitySpectator++; break; case LinphonePresenceActivitySteering: counters->number_of_LinphonePresenceActivitySteering++; break; case LinphonePresenceActivityTravel: counters->number_of_LinphonePresenceActivityTravel++; break; case LinphonePresenceActivityTV: counters->number_of_LinphonePresenceActivityTV++; break; case LinphonePresenceActivityUnknown: counters->number_of_LinphonePresenceActivityUnknown++; break; case LinphonePresenceActivityVacation: counters->number_of_LinphonePresenceActivityVacation++; break; case LinphonePresenceActivityWorking: counters->number_of_LinphonePresenceActivityWorking++; break; case LinphonePresenceActivityWorship: counters->number_of_LinphonePresenceActivityWorship++; break; } }
void notify_presence_received(LinphoneCore *lc, LinphoneFriend * lf) { stats* counters; unsigned int i; LinphoneAddress *addr = linphone_friend_get_address(lf); if (addr != NULL) { char* from=linphone_address_as_string(addr); ms_message("New Notify request from [%s] ",from); linphone_address_unref(addr); ms_free(from); } counters = get_stats(lc); counters->number_of_NotifyPresenceReceived++; counters->last_received_presence = linphone_friend_get_presence_model(lf); if (linphone_presence_model_get_basic_status(counters->last_received_presence) == LinphonePresenceBasicStatusOpen) { counters->number_of_LinphonePresenceBasicStatusOpen++; } else if (linphone_presence_model_get_basic_status(counters->last_received_presence) == LinphonePresenceBasicStatusClosed) { counters->number_of_LinphonePresenceBasicStatusClosed++; } else { ms_error("Unexpected basic status [%i]",linphone_presence_model_get_basic_status(counters->last_received_presence)); } for (i=0;counters->last_received_presence&&i<linphone_presence_model_get_nb_activities(counters->last_received_presence); i++) { LinphonePresenceActivity *activity = linphone_presence_model_get_nth_activity(counters->last_received_presence, i); switch (linphone_presence_activity_get_type(activity)) { case LinphonePresenceActivityOffline: counters->number_of_LinphonePresenceActivityOffline++; break; case LinphonePresenceActivityOnline: counters->number_of_LinphonePresenceActivityOnline++; break; case LinphonePresenceActivityAppointment: counters->number_of_LinphonePresenceActivityAppointment++; break; case LinphonePresenceActivityAway: counters->number_of_LinphonePresenceActivityAway++; break; case LinphonePresenceActivityBreakfast: counters->number_of_LinphonePresenceActivityBreakfast++; break; case LinphonePresenceActivityBusy: counters->number_of_LinphonePresenceActivityBusy++; break; case LinphonePresenceActivityDinner: counters->number_of_LinphonePresenceActivityDinner++; break; case LinphonePresenceActivityHoliday: counters->number_of_LinphonePresenceActivityHoliday++; break; case LinphonePresenceActivityInTransit: counters->number_of_LinphonePresenceActivityInTransit++; break; case LinphonePresenceActivityLookingForWork: counters->number_of_LinphonePresenceActivityLookingForWork++; break; case LinphonePresenceActivityLunch: counters->number_of_LinphonePresenceActivityLunch++; break; case LinphonePresenceActivityMeal: counters->number_of_LinphonePresenceActivityMeal++; break; case LinphonePresenceActivityMeeting: counters->number_of_LinphonePresenceActivityMeeting++; break; case LinphonePresenceActivityOnThePhone: counters->number_of_LinphonePresenceActivityOnThePhone++; break; case LinphonePresenceActivityOther: counters->number_of_LinphonePresenceActivityOther++; break; case LinphonePresenceActivityPerformance: counters->number_of_LinphonePresenceActivityPerformance++; break; case LinphonePresenceActivityPermanentAbsence: counters->number_of_LinphonePresenceActivityPermanentAbsence++; break; case LinphonePresenceActivityPlaying: counters->number_of_LinphonePresenceActivityPlaying++; break; case LinphonePresenceActivityPresentation: counters->number_of_LinphonePresenceActivityPresentation++; break; case LinphonePresenceActivityShopping: counters->number_of_LinphonePresenceActivityShopping++; break; case LinphonePresenceActivitySleeping: counters->number_of_LinphonePresenceActivitySleeping++; break; case LinphonePresenceActivitySpectator: counters->number_of_LinphonePresenceActivitySpectator++; break; case LinphonePresenceActivitySteering: counters->number_of_LinphonePresenceActivitySteering++; break; case LinphonePresenceActivityTravel: counters->number_of_LinphonePresenceActivityTravel++; break; case LinphonePresenceActivityTV: counters->number_of_LinphonePresenceActivityTV++; break; case LinphonePresenceActivityUnknown: counters->number_of_LinphonePresenceActivityUnknown++; break; case LinphonePresenceActivityVacation: counters->number_of_LinphonePresenceActivityVacation++; break; case LinphonePresenceActivityWorking: counters->number_of_LinphonePresenceActivityWorking++; break; case LinphonePresenceActivityWorship: counters->number_of_LinphonePresenceActivityWorship++; break; } } }