Init commit for standalone enodebd

Change-Id: I88eeef5135dd7ba8551ddd9fb6a0695f5325337b
diff --git a/state_machines/enb_acs_pointer.py b/state_machines/enb_acs_pointer.py
new file mode 100644
index 0000000..3ec19a7
--- /dev/null
+++ b/state_machines/enb_acs_pointer.py
@@ -0,0 +1,38 @@
+"""
+Copyright 2020 The Magma Authors.
+
+This source code is licensed under the BSD-style license found in the
+LICENSE file in the root directory of this source tree.
+
+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.
+"""
+
+from state_machines.enb_acs import EnodebAcsStateMachine
+
+
+class StateMachinePointer:
+    """
+    This is a hack to deal with the possibility that the specified data model
+    doesn't match the eNB device enodebd ends up connecting to.
+
+    When the data model doesn't match, the state machine is replaced with one
+    that matches the data model.
+    """
+
+    def __init__(self, acs_state_machine: EnodebAcsStateMachine):
+        self._acs_state_machine = acs_state_machine
+
+    @property
+    def state_machine(self):
+        return self._acs_state_machine
+
+    @state_machine.setter
+    def state_machine(
+        self,
+        acs_state_machine: EnodebAcsStateMachine,
+    ) -> None:
+        self._acs_state_machine = acs_state_machine