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

Commit 28301318 authored by Thomas Nguyen's avatar Thomas Nguyen Committed by Android (Google) Code Review
Browse files

Merge "Support the new API onSendDatagramRequested" into main

parents e59097e6 3e3b83a5
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -252,6 +252,7 @@ public class DatagramController {
            @NonNull Consumer<Integer> callback) {
        mDatagramDispatcher.sendSatelliteDatagram(subId, datagramType, datagram,
                needFullScreenPointingUI, callback);
        mPointingAppController.onSendDatagramRequested(subId, datagramType);
    }

    /**
+37 −0
Original line number Diff line number Diff line
@@ -189,6 +189,7 @@ public class PointingAppController {
        public static final int EVENT_SEND_DATAGRAM_STATE_CHANGED = 2;
        public static final int EVENT_RECEIVE_DATAGRAM_STATE_CHANGED = 3;
        public static final int EVENT_DATAGRAM_TRANSFER_STATE_CHANGED = 4;
        public static final int EVENT_SEND_DATAGRAM_REQUESTED = 5;

        private final ConcurrentHashMap<IBinder, ISatelliteTransmissionUpdateCallback> mListeners;

@@ -277,6 +278,24 @@ public class PointingAppController {
                    break;
                }

                case EVENT_SEND_DATAGRAM_REQUESTED: {
                    logd("Received EVENT_SEND_DATAGRAM_REQUESTED");
                    int datagramType = (int) msg.obj;
                    List<IBinder> toBeRemoved = new ArrayList<>();
                    mListeners.values().forEach(listener -> {
                        try {
                            listener.onSendDatagramRequested(datagramType);
                        } catch (RemoteException e) {
                            logd("EVENT_SEND_DATAGRAM_REQUESTED RemoteException: " + e);
                            toBeRemoved.add(listener.asBinder());
                        }
                    });
                    toBeRemoved.forEach(listener -> {
                        mListeners.remove(listener);
                    });
                    break;
                }

                default:
                    loge("SatelliteTransmissionUpdateHandler unknown event: " + msg.what);
            }
@@ -439,6 +458,24 @@ public class PointingAppController {
        }
    }

    /**
     * This API is used to notify PointingAppController that a send datagram has just been
     * requested.
     */
    public void onSendDatagramRequested(
            int subId, @SatelliteManager.DatagramType int datagramType) {
        SatelliteTransmissionUpdateHandler handler =
                mSatelliteTransmissionUpdateHandlers.get(subId);
        if (handler != null) {
            Message msg = handler.obtainMessage(
                    SatelliteTransmissionUpdateHandler.EVENT_SEND_DATAGRAM_REQUESTED,
                    datagramType);
            msg.sendToTarget();
        } else {
            ploge("SatelliteTransmissionUpdateHandler not found for subId: " + subId);
        }
    }

    public void updateReceiveDatagramTransferState(int subId,
            @SatelliteManager.SatelliteDatagramTransferState int datagramTransferState,
            int receivePendingCount, int errorCode) {
+5 −0
Original line number Diff line number Diff line
@@ -196,6 +196,11 @@ public class PointingAppControllerTest extends TelephonyTest {
            }
        }

        @Override
        public void onSendDatagramRequested(int datagramType) {
            logd("onSendDatagramRequested: datagramType=" + datagramType);
        }

        public int getDatagramType() {
            return mDatagramType;
        }