aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/StubRealTimeUsage.c
blob: 2342ef962eb0d0fce0983a6f87637399731ae7bb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
/*
 * StubRealTimeUsage.c

 *
 *  Created on: 15 may 2018
 *      Author: shlomo
 */
/*
 * Stub_RealTimeUsage.c
 *
 *  Created on: May 14, 2018
 *      Author: avi
 */



#include <Container.h>
#include <DataDef.h>

#include <PMR/Stubs/StubRealTimeUsageResponse.pb-c.h>
#include <PMR/Stubs/StubRealTimeUsageRequest.pb-c.h>

#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "inc/hw_uart.h"

#include "Drivers/USB_Communication/USBCDCD.h"


#include "MessageContainer.pb-c.h"

#include "Stub_Status.h"
#include "common/utilities/idle_task.h"


#include "Modules/thread/thread.h"


void Stub_RealTimeUsageRequest(MessageContainer* requestContainer)
{

    MessageContainer responseContainer;

    StubRealTimeUsageRequest* request = stub_real_time_usage_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data);

    StubRealTimeUsageResponse response =   STUB_REAL_TIME_USAGE_RESPONSE__INIT;


    response.n_percentile = 100;
    response.percentile = malloc(sizeof(response.percentile)*response.n_percentile);
    if (response.percentile)
        IdleTaskGetLoadTable(response.percentile);
    else
        response.n_percentile = 0;
    //free(request);
    //-------------------------------------------------------------------------------------------
    responseContainer = createContainer(MESSAGE_TYPE__StubRealTimeUsageResponse, requestContainer->token, true, &response, &stub_real_time_usage_response__pack, &stub_real_time_usage_response__get_packed_size);
    uint8_t* container_buffer = malloc(message_container__get_packed_size(&responseContainer));
    size_t container_size = message_container__pack(&responseContainer, container_buffer);
    free(responseContainer.data.data);
    SendChars((char*)container_buffer, container_size);
    if (response.percentile)
        free(response.percentile);

    stub_real_time_usage_request__free_unpacked(request,NULL);
}
pan class="w"> #region Descriptor /// <summary>File descriptor for StubSteperMotorResponse.proto</summary> public static pbr::FileDescriptor Descriptor { get { return descriptor; } } private static pbr::FileDescriptor descriptor; static StubSteperMotorResponseReflection() { byte[] descriptorData = global::System.Convert.FromBase64String( string.Concat( "Ch1TdHViU3RlcGVyTW90b3JSZXNwb25zZS5wcm90bxIPVGFuZ28uUE1SLlN0", "dWJzImQKF1N0dWJTdGVwZXJNb3RvclJlc3BvbnNlEg8KB01vdG9ySWQYASAB", "KA0SFAoMTW90b3JWZXJzaW9uGAIgASgNEg4KBlN0YXR1cxgDIAEoCRISCgpT", "dGF0dXNXb3JkGAQgASgNQhsKGWNvbS50d2luZS50YW5nby5wbXIuc3R1YnNi", "BnByb3RvMw==")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { }, new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Tango.PMR.Stubs.StubSteperMotorResponse), global::Tango.PMR.Stubs.StubSteperMotorResponse.Parser, new[]{ "MotorId", "MotorVersion", "Status", "StatusWord" }, null, null, null) })); } #endregion } #region Messages public sealed partial class StubSteperMotorResponse : pb::IMessage<StubSteperMotorResponse> { private static readonly pb::MessageParser<StubSteperMotorResponse> _parser = new pb::MessageParser<StubSteperMotorResponse>(() => new StubSteperMotorResponse()); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pb::MessageParser<StubSteperMotorResponse> Parser { get { return _parser; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { get { return global::Tango.PMR.Stubs.StubSteperMotorResponseReflection.Descriptor.MessageTypes[0]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] pbr::MessageDescriptor pb::IMessage.Descriptor { get { return Descriptor; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public StubSteperMotorResponse() { OnConstruction(); } partial void OnConstruction(); [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public StubSteperMotorResponse(StubSteperMotorResponse other) : this() { motorId_ = other.motorId_; motorVersion_ = other.motorVersion_; status_ = other.status_; statusWord_ = other.statusWord_; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public StubSteperMotorResponse Clone() { return new StubSteperMotorResponse(this); } /// <summary>Field number for the "MotorId" field.</summary> public const int MotorIdFieldNumber = 1; private uint motorId_; /// <summary> ///0..19 /// </summary> [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public uint MotorId { get { return motorId_; } set { motorId_ = value; } } /// <summary>Field number for the "MotorVersion" field.</summary> public const int MotorVersionFieldNumber = 2; private uint motorVersion_; /// <summary> /// </summary> [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public uint MotorVersion { get { return motorVersion_; } set { motorVersion_ = value; } } /// <summary>Field number for the "Status" field.</summary> public const int StatusFieldNumber = 3; private string status_ = ""; /// <summary> /// Passed / Failed /// </summary> [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public string Status { get { return status_; } set { status_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); } } /// <summary>Field number for the "StatusWord" field.</summary> public const int StatusWordFieldNumber = 4; private uint statusWord_; /// <summary> /// Error number/bit when the status is Failed /// </summary> [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public uint StatusWord { get { return statusWord_; } set { statusWord_ = value; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public override bool Equals(object other) { return Equals(other as StubSteperMotorResponse); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public bool Equals(StubSteperMotorResponse other) { if (ReferenceEquals(other, null)) { return false; } if (ReferenceEquals(other, this)) { return true; } if (MotorId != other.MotorId) return false; if (MotorVersion != other.MotorVersion) return false; if (Status != other.Status) return false; if (StatusWord != other.StatusWord) return false; return true; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public override int GetHashCode() { int hash = 1; if (MotorId != 0) hash ^= MotorId.GetHashCode(); if (MotorVersion != 0) hash ^= MotorVersion.GetHashCode(); if (Status.Length != 0) hash ^= Status.GetHashCode(); if (StatusWord != 0) hash ^= StatusWord.GetHashCode(); return hash; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public override string ToString() { return pb::JsonFormatter.ToDiagnosticString(this); } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public void WriteTo(pb::CodedOutputStream output) { if (MotorId != 0) { output.WriteRawTag(8); output.WriteUInt32(MotorId); } if (MotorVersion != 0) { output.WriteRawTag(16); output.WriteUInt32(MotorVersion); } if (Status.Length != 0) { output.WriteRawTag(26); output.WriteString(Status); } if (StatusWord != 0) { output.WriteRawTag(32); output.WriteUInt32(StatusWord); } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public int CalculateSize() { int size = 0; if (MotorId != 0) { size += 1 + pb::CodedOutputStream.ComputeUInt32Size(MotorId); } if (MotorVersion != 0) { size += 1 + pb::CodedOutputStream.ComputeUInt32Size(MotorVersion); } if (Status.Length != 0) { size += 1 + pb::CodedOutputStream.ComputeStringSize(Status); } if (StatusWord != 0) { size += 1 + pb::CodedOutputStream.ComputeUInt32Size(StatusWord); } return size; } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public void MergeFrom(StubSteperMotorResponse other) { if (other == null) { return; } if (other.MotorId != 0) { MotorId = other.MotorId; } if (other.MotorVersion != 0) { MotorVersion = other.MotorVersion; } if (other.Status.Length != 0) { Status = other.Status; } if (other.StatusWord != 0) { StatusWord = other.StatusWord; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public void MergeFrom(pb::CodedInputStream input) { uint tag; while ((tag = input.ReadTag()) != 0) { switch(tag) { default: input.SkipLastField(); break; case 8: { MotorId = input.ReadUInt32(); break; } case 16: { MotorVersion = input.ReadUInt32(); break; } case 26: { Status = input.ReadString(); break; } case 32: { StatusWord = input.ReadUInt32(); break; } } } } } #endregion } #endregion Designer generated code