Add New 2024 Actions + Stats

Signed-off-by: Emily Markova <emily.markova@gmail.com>
Change-Id: I945b6e4450695119ad1edc72701f4a9afe79c3c4
diff --git a/scouting/webserver/requests/messages/BUILD b/scouting/webserver/requests/messages/BUILD
index 735caab..d0534a51 100644
--- a/scouting/webserver/requests/messages/BUILD
+++ b/scouting/webserver/requests/messages/BUILD
@@ -11,6 +11,8 @@
     "request_all_notes_response",
     "request_2023_data_scouting",
     "request_2023_data_scouting_response",
+    "request_2024_data_scouting",
+    "request_2024_data_scouting_response",
     "submit_notes",
     "submit_notes_response",
     "request_notes_for_team",
@@ -29,8 +31,12 @@
     "submit_driver_ranking_response",
     "submit_actions",
     "submit_actions_response",
+    "submit_2024_actions",
+    "submit_2024_actions_response",
     "delete_2023_data_scouting",
     "delete_2023_data_scouting_response",
+    "delete_2024_data_scouting",
+    "delete_2024_data_scouting_response",
 )
 
 filegroup(
diff --git a/scouting/webserver/requests/messages/delete_2024_data_scouting.fbs b/scouting/webserver/requests/messages/delete_2024_data_scouting.fbs
new file mode 100644
index 0000000..827aa98
--- /dev/null
+++ b/scouting/webserver/requests/messages/delete_2024_data_scouting.fbs
@@ -0,0 +1,10 @@
+namespace scouting.webserver.requests;
+
+table Delete2024DataScouting {
+    comp_level:string (id: 0);
+    match_number:int (id: 1);
+    set_number:int (id: 2);
+    team_number:string (id: 3);
+}
+
+root_type Delete2024DataScouting;
diff --git a/scouting/webserver/requests/messages/delete_2024_data_scouting_response.fbs b/scouting/webserver/requests/messages/delete_2024_data_scouting_response.fbs
new file mode 100644
index 0000000..2dbb81f
--- /dev/null
+++ b/scouting/webserver/requests/messages/delete_2024_data_scouting_response.fbs
@@ -0,0 +1,7 @@
+namespace scouting.webserver.requests;
+
+table Delete2024DataScoutingResponse {
+    // empty response
+}
+
+root_type Delete2024DataScoutingResponse;
diff --git a/scouting/webserver/requests/messages/request_2024_data_scouting.fbs b/scouting/webserver/requests/messages/request_2024_data_scouting.fbs
new file mode 100644
index 0000000..738aade
--- /dev/null
+++ b/scouting/webserver/requests/messages/request_2024_data_scouting.fbs
@@ -0,0 +1,7 @@
+namespace scouting.webserver.requests;
+
+table Request2024DataScouting {
+
+}
+
+root_type Request2024DataScouting;
diff --git a/scouting/webserver/requests/messages/request_2024_data_scouting_response.fbs b/scouting/webserver/requests/messages/request_2024_data_scouting_response.fbs
new file mode 100644
index 0000000..d653f04
--- /dev/null
+++ b/scouting/webserver/requests/messages/request_2024_data_scouting_response.fbs
@@ -0,0 +1,37 @@
+namespace scouting.webserver.requests;
+
+table Stats2024 {
+  team_number:string (id: 0);
+  match_number:int (id: 1);
+  set_number:int (id: 18);
+  comp_level:string (id: 19);
+
+  starting_quadrant:int (id: 2);
+  speaker_auto:int (id:3);
+  amp_auto:int (id:4);
+  notes_dropped_auto:int (id: 5);
+  mobility_auto: bool (id: 6);
+
+  speaker:int (id:7);
+  amp:int (id:8);
+  speaker_amplified:int (id:9);
+  amp_amplified:int (id:10);
+  notes_dropped:int (id:11);
+
+  penalties:int (id:12);
+  trap_note:bool (id:13);
+  // Time in nanoseconds.
+  avg_cycle: int64 (id:14);
+  park: bool (id:15);
+  on_stage: bool (id:16);
+  harmony: bool (id:17);
+
+  pre_scouting:bool (id:20);
+  collected_by:string (id:21);
+}
+
+table Request2024DataScoutingResponse {
+    stats_list:[Stats2024] (id:0);
+}
+
+root_type Request2024DataScoutingResponse;
diff --git a/scouting/webserver/requests/messages/submit_2024_actions.fbs b/scouting/webserver/requests/messages/submit_2024_actions.fbs
new file mode 100644
index 0000000..5cb3cbe
--- /dev/null
+++ b/scouting/webserver/requests/messages/submit_2024_actions.fbs
@@ -0,0 +1,71 @@
+namespace scouting.webserver.requests;
+
+table StartMatchAction {
+    position:int (id:0);
+}
+
+enum ScoreType: short {
+    kAMP,
+    kAMP_AMPLIFIED,
+    kSPEAKER,
+    kSPEAKER_AMPLIFIED,
+}
+
+table MobilityAction {
+    mobility:bool (id:0);
+}
+
+table PenaltyAction {}
+
+table PickupNoteAction {
+    auto:bool (id:0);
+}
+
+table PlaceNoteAction {
+    score_type:ScoreType (id:0);
+    auto:bool (id:1);
+}
+
+table RobotDeathAction {
+    robot_dead:bool (id:0);
+}
+
+enum StageType: short {
+    kON_STAGE,
+    kPARK,
+    kHARMONY,
+    kMISSING,
+}
+
+table EndMatchAction {
+    stage_type:StageType (id:0);
+    trap_note:bool (id:1);
+}
+
+union ActionType {
+    MobilityAction,
+    StartMatchAction,
+    PickupNoteAction,
+    PlaceNoteAction,
+    PenaltyAction,
+    RobotDeathAction,
+    EndMatchAction
+}
+
+table Action {
+    timestamp:int64 (id:0);
+    action_taken:ActionType (id:2);
+}
+
+table Submit2024Actions {
+    team_number:string (id: 0);
+    match_number:int (id: 1);
+    set_number:int (id: 2);
+    comp_level:string (id: 3);
+    actions_list:[Action] (id:4);
+
+    // If this is for pre-scouting, then the server should accept this
+    // submission. I.e. checking that the match information exists in the match
+    // list should be skipped.
+    pre_scouting:bool (id: 5);
+}
\ No newline at end of file
diff --git a/scouting/webserver/requests/messages/submit_2024_actions_response.fbs b/scouting/webserver/requests/messages/submit_2024_actions_response.fbs
new file mode 100644
index 0000000..100172b
--- /dev/null
+++ b/scouting/webserver/requests/messages/submit_2024_actions_response.fbs
@@ -0,0 +1,7 @@
+namespace scouting.webserver.requests;
+
+table Submit2024ActionsResponse {
+    // empty response
+}
+
+root_type Submit2024ActionsResponse;
\ No newline at end of file