run_testcase("/trigger/cond/wifi", _trigger_cond_wifi);
run_testcase("/trigger/cond/psmode", _trigger_cond_psmode);
run_testcase("/trigger/cond/call", _trigger_cond_call);
+ run_testcase("/trigger/cond/time", _trigger_cond_time);
run_testcase("/trigger/cond/app_freq1", _trigger_cond_app_use_freq1);
run_testcase("/trigger/cond/app_freq2", _trigger_cond_app_use_freq2);
return true;
}
+bool _trigger_cond_time()
+{
+ if (!__support(CONTEXT_TRIGGER_CONDITION_TIME)) return false;
+
+ err = ctx::request_handler::read_sync(CT_CONDITION_TIME, NULL, &req_id, &json_val);
+ ASSERT_CMPINT(err, ==, ERR_NONE);
+
+ ASSERT_CONTAIN_INT(json_val, CONTEXT_TRIGGER_TIME_OF_DAY);
+ ASSERT_CONTAIN_INT(json_val, CONTEXT_TRIGGER_DAY_OF_MONTH);
+ ASSERT_CONTAIN_STR(json_val, CONTEXT_TRIGGER_DAY_OF_WEEK);
+
+ return true;
+}
+
static std::string& __get_objective_app_id()
{
static std::string app_id;
* limitations under the License.
*/
+#include <time.h>
#include <request_handler.h>
#include <context_trigger.h>
#include <context_trigger_types_internal.h>
ctx::request_handler::register_callback(CT_EVENT_USB, __domain_cb);
ctx::request_handler::register_callback(CT_EVENT_WIFI, __domain_cb);
ctx::request_handler::register_callback(CT_EVENT_CALL, __domain_cb);
+ ctx::request_handler::register_callback(CT_EVENT_TIME, __domain_cb);
ctx::request_handler::register_callback(CT_EVENT_EMAIL, __domain_cb);
ctx::request_handler::register_callback(CT_EVENT_MESSAGE, __domain_cb);
ctx::request_handler::register_callback(CT_EVENT_ACTIVITY_STATIONARY, __domain_cb);
run_testcase("/trigger/event/wifi", _trigger_event_wifi);
run_testcase("/trigger/event/psmode", _trigger_event_psmode);
run_testcase("/trigger/event/call", _trigger_event_call);
+ run_testcase("/trigger/event/time", _trigger_event_time);
run_testcase("/trigger/event/email", _trigger_event_email);
run_testcase("/trigger/event/message", _trigger_event_message);
run_testcase("/trigger/event/activity", _trigger_event_activity);
return true;
}
+bool _trigger_event_time()
+{
+ if (!__support(CONTEXT_TRIGGER_EVENT_TIME)) return false;
+
+ time_t rawtime;
+ struct tm timeinfo;
+ time(&rawtime);
+ tzset();
+ localtime_r(&rawtime, &timeinfo);
+ int dow = timeinfo.tm_wday;
+ int tod = timeinfo.tm_hour * 3600 + timeinfo.tm_min * 60 + timeinfo.tm_sec;
+ tod = (tod + 70) / 60;
+
+ std::string dow_str;
+ switch (dow) {
+ case 0:
+ dow_str = CONTEXT_TRIGGER_SUN;
+ break;
+ case 1:
+ dow_str = CONTEXT_TRIGGER_MON;
+ break;
+ case 2:
+ dow_str = CONTEXT_TRIGGER_TUE;
+ break;
+ case 3:
+ dow_str = CONTEXT_TRIGGER_WED;
+ break;
+ case 4:
+ dow_str = CONTEXT_TRIGGER_THU;
+ break;
+ case 5:
+ dow_str = CONTEXT_TRIGGER_FRI;
+ break;
+ case 6:
+ dow_str = CONTEXT_TRIGGER_SAT;
+ break;
+ default:
+ dow_str = CONTEXT_TRIGGER_WEEKDAY;
+ break;
+ }
+ ctx::Json option;
+ option.append(NULL, CONTEXT_TRIGGER_DAY_OF_WEEK, dow_str);
+ option.append(NULL, CONTEXT_TRIGGER_TIME_OF_DAY, tod);
+
+ err = ctx::request_handler::subscribe(CT_EVENT_TIME, &option, &req_id, NULL);
+ ASSERT_CMPINT(err, ==, ERR_NONE);
+
+ callback_count = 1;
+ g_print("\n> Wait until %02d:%02d %s.\n", tod / 60, tod % 60, dow_str.c_str());
+ start_mainloop();
+
+ ctx::request_handler::unsubscribe(CT_EVENT_CALL, req_id);
+
+ ASSERT_CONTAIN_INT(json_val, CONTEXT_TRIGGER_TIME_OF_DAY);
+ ASSERT_CONTAIN_STR(json_val, CONTEXT_TRIGGER_DAY_OF_WEEK);
+
+ return true;
+}
+
bool _trigger_event_email()
{
if (!__support(CONTEXT_TRIGGER_EVENT_EMAIL)) return false;