blob: 4a29dbbc7a423ace00452084bde0d2155bd98a90 [file] [log] [blame]
/*
* Copyright (C) 2017 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.pmc;
import android.app.AlarmManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.util.Log;
/**
* PMC Receiver functions for GATT Client and Server.
*/
public class GattPMCReceiver extends BroadcastReceiver {
public static final String TAG = "GATTPMC";
public static final String GATTPMC_INTENT = "com.android.pmc.GATT";
private final GattClientListener mGattClientListener;
private final GattServer mGattServer;
/**
* Constructor to be called by PMC
*
* @param context - PMC will provide a context
* @param alarmManager - PMC will provide alarmManager
*/
public GattPMCReceiver(Context context, AlarmManager alarmManager) {
Log.d(TAG, "Start GattPMCReceiver()");
// Prepare for setting alarm service
mGattClientListener = new GattClientListener(context, alarmManager);
mGattServer = new GattServer(context);
// RegisterAlarmReceiver for GattListener
context.registerReceiver(mGattClientListener,
new IntentFilter(GattClientListener.GATTCLIENT_ALARM));
Log.d(TAG, "Start GattPMCReceiver()");
}
/**
* Method to receive the broadcast from python client for PMC commands
*
* @param context - system will provide a context to this function
* @param intent - system will provide an intent to this function
*/
@Override
public void onReceive(Context context, Intent intent) {
Log.d(TAG, "Intent: " + intent.getAction());
if (intent.getAction().equals(GATTPMC_INTENT)) {
Bundle extras = intent.getExtras();
int startTime = 0, writeTime = 0, idleTime = 0, Repetitions = 1;
String str;
if (extras == null) {
Log.e(TAG, "No parameters specified");
return;
}
if (extras.containsKey("GattServer")) {
// this is for Gatt Server
Log.d(TAG, "For Gatt Server");
mGattServer.startGattServer();
return;
}
if (!extras.containsKey("StartTime")) {
Log.e(TAG, "No Start Time specified");
return;
}
str = extras.getString("StartTime");
Log.d(TAG, "Start Time = " + str);
startTime = Integer.valueOf(str);
if (!extras.containsKey("WriteTime")) {
Log.e(TAG, "No WriteTime specified for GATT write");
return;
}
str = extras.getString("WriteTime");
Log.d(TAG, "Write Time = " + str);
writeTime = Integer.valueOf(str);
if (!extras.containsKey("IdleTime")) {
Log.e(TAG, "No IdleTime specified for GATT write");
return;
}
str = extras.getString("IdleTime");
Log.d(TAG, "Idle Time = " + str);
idleTime = Integer.valueOf(str);
if (!extras.containsKey("Repetitions")) {
Log.e(TAG, "No Repetitions specified for GATT write");
return;
}
str = extras.getString("Repetitions");
Log.d(TAG, "Repetitions = " + str);
Repetitions = Integer.valueOf(str);
mGattClientListener.startAlarm(startTime, writeTime, idleTime, Repetitions, null);
}
}
}