Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 41040f4e authored by Hyosun Kim's avatar Hyosun Kim
Browse files

Add two datagram sos message type

1. DATAGRAM_TYPE_LAST_SOS_MESSAGE_STILL_NEED_HELP
2. DATAGRAM_TYPE_LAST_SOS_MESSAGE_NO_HELP_NEEDED

Bug: 340137228
Test: atest SatelliteControllerTest, DatagramDispatcherTest, DatagramControllerTest, ControllerMetricsStatsTest
Test: demo mode

Change-Id: I94a27cb9d72315449ecd04b659acaabc9d01cb13
parent 54127e96
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -420,13 +420,15 @@ public class DatagramController {

    /**
     * Set last sent datagram for demo mode
     * @param datagramType datagram type, only DATAGRAM_TYPE_SOS_MESSAGE will be saved
     * @param datagramType datagram type, DATAGRAM_TYPE_SOS_MESSAGE,
     *                     DATAGRAM_TYPE_LAST_SOS_MESSAGE_STILL_NEED_HELP,
     *                     DATAGRAM_TYPE_LAST_SOS_MESSAGE_NO_HELP_NEEDED will be saved
     * @param datagram datagram The last datagram saved when sendSatelliteDatagramForDemo is called
     */
    @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE)
    public void pushDemoModeDatagram(@SatelliteManager.DatagramType int datagramType,
            SatelliteDatagram datagram) {
        if (mIsDemoMode && datagramType == SatelliteManager.DATAGRAM_TYPE_SOS_MESSAGE) {
        if (mIsDemoMode && SatelliteServiceUtils.isSosMessage(datagramType)) {
            synchronized (mLock) {
                mDemoModeDatagramList.add(datagram);
                logd("pushDemoModeDatagram size=" + mDemoModeDatagramList.size());
+5 −5
Original line number Diff line number Diff line
@@ -221,7 +221,7 @@ public class DatagramDispatcher extends Handler {
                    } else {
                        SatelliteModemInterface.getInstance().sendSatelliteDatagram(
                                argument.datagram,
                                argument.datagramType == SatelliteManager.DATAGRAM_TYPE_SOS_MESSAGE,
                                SatelliteServiceUtils.isSosMessage(argument.datagramType),
                                argument.needFullScreenPointingUI, onCompleted);
                        startWaitForDatagramSendingResponseTimer(argument);
                    }
@@ -266,7 +266,7 @@ public class DatagramDispatcher extends Handler {
                    // Log metrics about the outgoing datagram
                    reportSendDatagramCompleted(argument, error);
                    // Remove current datagram from pending map.
                    if (argument.datagramType == SatelliteManager.DATAGRAM_TYPE_SOS_MESSAGE) {
                    if (SatelliteServiceUtils.isSosMessage(argument.datagramType)) {
                        mPendingEmergencyDatagramsMap.remove(argument.datagramId);
                    } else {
                        mPendingNonEmergencyDatagramsMap.remove(argument.datagramId);
@@ -373,7 +373,7 @@ public class DatagramDispatcher extends Handler {

        synchronized (mLock) {
            // Add datagram to pending datagram map
            if (datagramType == SatelliteManager.DATAGRAM_TYPE_SOS_MESSAGE) {
            if (SatelliteServiceUtils.isSosMessage(datagramType)) {
                mPendingEmergencyDatagramsMap.put(datagramId, datagramArgs);
            } else {
                mPendingNonEmergencyDatagramsMap.put(datagramId, datagramArgs);
@@ -765,7 +765,7 @@ public class DatagramDispatcher extends Handler {
    private boolean shouldProcessEventSendSatelliteDatagramDone(
            @NonNull SendSatelliteDatagramArgument argument) {
        synchronized (mLock) {
            if (argument.datagramType == SatelliteManager.DATAGRAM_TYPE_SOS_MESSAGE) {
            if (SatelliteServiceUtils.isSosMessage(argument.datagramType)) {
                return mPendingEmergencyDatagramsMap.containsKey(argument.datagramId);
            } else {
                return mPendingNonEmergencyDatagramsMap.containsKey(argument.datagramId);
@@ -801,7 +801,7 @@ public class DatagramDispatcher extends Handler {
            mControllerMetricsStats.reportOutgoingDatagramFailCount(argument.datagramType,
                    mIsDemoMode);
            // Remove current datagram from pending map.
            if (argument.datagramType == SatelliteManager.DATAGRAM_TYPE_SOS_MESSAGE) {
            if (SatelliteServiceUtils.isSosMessage(argument.datagramType)) {
                mPendingEmergencyDatagramsMap.remove(argument.datagramId);
            } else {
                mPendingNonEmergencyDatagramsMap.remove(argument.datagramId);
+9 −0
Original line number Diff line number Diff line
@@ -346,6 +346,15 @@ public class SatelliteServiceUtils {
        return mergedStrSet.stream().toList();
    }

    /**
     *
     */
    public static boolean isSosMessage(int datagramType) {
        return datagramType == SatelliteManager.DATAGRAM_TYPE_SOS_MESSAGE
                || datagramType == SatelliteManager.DATAGRAM_TYPE_LAST_SOS_MESSAGE_STILL_NEED_HELP
                || datagramType == SatelliteManager.DATAGRAM_TYPE_LAST_SOS_MESSAGE_NO_HELP_NEEDED;
    }

    /**
     * Return phone associated with phoneId 0.
     *
+3 −2
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import android.util.Log;

import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.telephony.metrics.SatelliteStats;
import com.android.internal.telephony.satellite.SatelliteServiceUtils;

/**
 * Stats to log to satellite metrics
@@ -142,7 +143,7 @@ public class ControllerMetricsStats {
            builder.setCountOfOutgoingDatagramSuccess(ADD_COUNT);
        }

        if (datagramType == SatelliteManager.DATAGRAM_TYPE_SOS_MESSAGE) {
        if (SatelliteServiceUtils.isSosMessage(datagramType)) {
            builder.setCountOfDatagramTypeSosSmsSuccess(ADD_COUNT);
        } else if (datagramType == SatelliteManager.DATAGRAM_TYPE_LOCATION_SHARING) {
            builder.setCountOfDatagramTypeLocationSharingSuccess(ADD_COUNT);
@@ -167,7 +168,7 @@ public class ControllerMetricsStats {
            builder.setCountOfOutgoingDatagramFail(ADD_COUNT);
        }

        if (datagramType == SatelliteManager.DATAGRAM_TYPE_SOS_MESSAGE) {
        if (SatelliteServiceUtils.isSosMessage(datagramType)) {
            builder.setCountOfDatagramTypeSosSmsFail(ADD_COUNT);
        } else if (datagramType == SatelliteManager.DATAGRAM_TYPE_LOCATION_SHARING) {
            builder.setCountOfDatagramTypeLocationSharingFail(ADD_COUNT);
+68 −60
Original line number Diff line number Diff line
@@ -133,7 +133,10 @@ public class ControllerMetricsStatsTest extends TelephonyTest {
    @Test
    public void testReportOutgoingDatagramSuccessCount() {
        mTestStats.initializeParams();
        int datagramType = SatelliteManager.DATAGRAM_TYPE_SOS_MESSAGE;
        int[] sosDatagramTypes = {SatelliteManager.DATAGRAM_TYPE_SOS_MESSAGE,
                SatelliteManager.DATAGRAM_TYPE_LAST_SOS_MESSAGE_STILL_NEED_HELP,
                SatelliteManager.DATAGRAM_TYPE_LAST_SOS_MESSAGE_NO_HELP_NEEDED};
        for (int datagramType : sosDatagramTypes) {
            for (int i = 0; i < 10; i++) {
                mControllerMetricsStatsUT.reportOutgoingDatagramSuccessCount(datagramType, false);
            }
@@ -163,8 +166,9 @@ public class ControllerMetricsStatsTest extends TelephonyTest {
            assertEquals(0, mTestStats.mCountOfDatagramTypeKeepAliveSuccess);
            assertEquals(0, mTestStats.mCountOfDatagramTypeKeepAliveFail);
            mTestStats.initializeParams();
        }

        datagramType = SatelliteManager.DATAGRAM_TYPE_LOCATION_SHARING;
        int datagramType = SatelliteManager.DATAGRAM_TYPE_LOCATION_SHARING;
        for (int i = 0; i < 10; i++) {
            mControllerMetricsStatsUT.reportOutgoingDatagramSuccessCount(datagramType, true);
        }
@@ -230,7 +234,10 @@ public class ControllerMetricsStatsTest extends TelephonyTest {
    @Test
    public void reportOutgoingDatagramFailCount() {
        mTestStats.initializeParams();
        int datagramType = SatelliteManager.DATAGRAM_TYPE_SOS_MESSAGE;
        int[] sosDatagramTypes = {SatelliteManager.DATAGRAM_TYPE_SOS_MESSAGE,
                SatelliteManager.DATAGRAM_TYPE_LAST_SOS_MESSAGE_STILL_NEED_HELP,
                SatelliteManager.DATAGRAM_TYPE_LAST_SOS_MESSAGE_NO_HELP_NEEDED};
        for (int datagramType : sosDatagramTypes) {
            for (int i = 0; i < 10; i++) {
                mControllerMetricsStatsUT.reportOutgoingDatagramFailCount(datagramType, false);
            }
@@ -260,8 +267,9 @@ public class ControllerMetricsStatsTest extends TelephonyTest {
            assertEquals(0, mTestStats.mCountOfDatagramTypeKeepAliveSuccess);
            assertEquals(0, mTestStats.mCountOfDatagramTypeKeepAliveFail);
            mTestStats.initializeParams();
        }

        datagramType = SatelliteManager.DATAGRAM_TYPE_LOCATION_SHARING;
        int datagramType = SatelliteManager.DATAGRAM_TYPE_LOCATION_SHARING;
        for (int i = 0; i < 10; i++) {
            mControllerMetricsStatsUT.reportOutgoingDatagramFailCount(datagramType, true);
        }
Loading