2 * Copyright 2012 Samsung Electronics Co., Ltd
4 * Licensed under the Flora License, Version 1.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.tizenopensource.org/license
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
21 #include <notification.h>
23 #include "sys_device_noti.h"
25 #define BATTERY_FULL_ICON_PATH "/usr/share/system-server/sys_device_noti/batt_full_icon.png"
26 static int battery_full_noti(int bNoti)
28 int charge_full = bNoti;
29 notification_h noti = NULL;
30 notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
32 if (charge_full == 1) {
33 noti_err = notification_delete_all_by_type(NULL, NOTIFICATION_TYPE_NOTI);
34 PRT_TRACE("[BAT_FULL_NOTI] add notification for battery full\n");
35 noti = notification_new(NOTIFICATION_TYPE_NOTI, NOTIFICATION_GROUP_ID_NONE, NOTIFICATION_PRIV_ID_NONE);
37 PRT_TRACE("[BAT_FULL_NOTI] Errot noti == NULL\n");
41 noti_err = notification_set_text(noti, NOTIFICATION_TEXT_TYPE_TITLE, "Battery fully charged", NULL, NOTIFICATION_VARIABLE_TYPE_NONE);
42 if (noti_err != NOTIFICATION_ERROR_NONE) {
43 PRT_TRACE("[BAT_FULL_NOTI] Error notification_set_title : %d\n", noti_err);
44 noti_err = notification_free(noti);
45 if (noti_err != NOTIFICATION_ERROR_NONE) {
46 PRT_TRACE("[BAT_FULL_NOTI] Error notification_free : %d\n", noti_err);
52 noti_err = notification_set_text(noti, NOTIFICATION_TEXT_TYPE_CONTENT, "Unplug charger", NULL, NOTIFICATION_VARIABLE_TYPE_NONE);
53 if (noti_err != NOTIFICATION_ERROR_NONE) {
54 PRT_TRACE("[BAT_FULL_NOTI] Error notification_set_content : %d\n", noti_err);
55 noti_err = notification_free(noti);
56 if (noti_err != NOTIFICATION_ERROR_NONE) {
57 PRT_TRACE("[BAT_FULL_NOTI] Error notification_free : %d\n", noti_err);
63 noti_err = notification_set_text(noti, NOTIFICATION_TEXT_TYPE_CONTENT_FOR_DISPLAY_OPTION_IS_OFF, "Unplug charger", NULL, NOTIFICATION_VARIABLE_TYPE_NONE);
64 if (noti_err != NOTIFICATION_ERROR_NONE) {
65 PRT_TRACE("[BAT_FULL_NOTI] Error notification_set_content : %d\n", noti_err);
66 noti_err = notification_free(noti);
67 if (noti_err != NOTIFICATION_ERROR_NONE) {
68 PRT_TRACE("[BAT_FULL_NOTI] Error notification_free : %d\n", noti_err);
74 noti_err = notification_set_time(noti, time(NULL));
75 if (noti_err != NOTIFICATION_ERROR_NONE) {
76 PRT_TRACE("[BAT_FULL_NOTI] Error notification_set_time : %d\n", noti_err);
77 noti_err = notification_free(noti);
78 if (noti_err != NOTIFICATION_ERROR_NONE) {
79 PRT_TRACE("[BAT_FULL_NOTI] Error notification_free : %d\n", noti_err);
85 noti_err = notification_set_image(noti, NOTIFICATION_IMAGE_TYPE_ICON, BATTERY_FULL_ICON_PATH);
86 if (noti_err != NOTIFICATION_ERROR_NONE) {
87 PRT_TRACE("[BAT_FULL_NOTI] Error notification_set_image : %d\n", noti_err);
88 noti_err = notification_free(noti);
89 if (noti_err != NOTIFICATION_ERROR_NONE) {
90 PRT_TRACE("[BAT_FULL_NOTI] Error notification_free : %d\n", noti_err);
96 noti_err = notification_set_property(noti, NOTIFICATION_PROP_DISABLE_APP_LAUNCH | NOTIFICATION_PROP_DISABLE_TICKERNOTI | NOTIFICATION_PROP_VOLATILE_DISPLAY);
97 if (noti_err != NOTIFICATION_ERROR_NONE) {
98 PRT_TRACE("[BAT_FULL_NOTI] Error notification_set_property : %d\n", noti_err);
99 noti_err = notification_free(noti);
100 if (noti_err != NOTIFICATION_ERROR_NONE) {
101 PRT_TRACE("[BAT_FULL_NOTI] Error notification_free : %d\n", noti_err);
107 noti_err = notification_set_display_applist(noti, NOTIFICATION_DISPLAY_APP_NOTIFICATION_TRAY);
108 if (noti_err != NOTIFICATION_ERROR_NONE) {
109 PRT_TRACE("[BAT_FULL_NOTI] Error notification_set_display_applist : %d\n", noti_err);
110 noti_err = notification_free(noti);
111 if (noti_err != NOTIFICATION_ERROR_NONE) {
112 PRT_TRACE("[BAT_FULL_NOTI] Error notification_free : %d\n", noti_err);
118 noti_err = notification_insert(noti, NULL);
119 if (noti_err != NOTIFICATION_ERROR_NONE) {
120 PRT_TRACE("[BAT_FULL_NOTI] Error notification_insert : %d\n", noti_err);
121 noti_err = notification_free(noti);
122 if (noti_err != NOTIFICATION_ERROR_NONE) {
123 PRT_TRACE("[BAT_FULL_NOTI] Error notification_free : %d\n", noti_err);
129 noti_err = notification_free(noti);
130 if (noti_err != NOTIFICATION_ERROR_NONE) {
131 PRT_TRACE("[BAT_FULL_NOTI] Error notification_free : %d\n", noti_err);
134 pm_change_state(LCD_NORMAL);
136 noti_err = notification_delete_all_by_type(NULL, NOTIFICATION_TYPE_NOTI);
137 PRT_TRACE("[BAT_FULL_NOTI] Leave battery full status\n");
142 int main(int argc, char *argv[])
148 vibration_type vib = -1;
149 cb_noti_type cb_type = -1;
152 bNoti = atoi(argv[2]);
153 cb_type = (cb_noti_type)atoi(argv[1]);
155 case CB_NOTI_BATT_CHARGE:
156 vib = SVI_VIB_OPERATION_CHARGERCONN;
157 snd = SVI_SND_OPERATION_CHARGERCONN;
159 case CB_NOTI_BATT_FULL:
160 battery_full_noti(bNoti);
162 vib = SVI_VIB_OPERATION_FULLCHARGED;
163 snd = SVI_SND_OPERATION_FULLCHARGED;
168 PRT_TRACE("sys_device_noti cb_type error(%d)",cb_type);
172 r = svi_init(&handle); /* Initialize SVI */
174 if (r != SVI_SUCCESS) {
175 PRT_TRACE("Cannot initialize SVI.\n");
177 r = svi_play(handle, vib, snd);
178 if (r != SVI_SUCCESS)
179 PRT_TRACE("Cannot play sound or vibration.\n");
180 r = svi_fini(handle); /* Finalize SVI */
181 if (r != SVI_SUCCESS)
182 PRT_TRACE("Cannot close SVI.\n");