demo project
Dependencies: AX-12A Dynamixel mbed iothub_client EthernetInterface NTPClient ConfigFile SDFileSystem iothub_amqp_transport mbed-rtos proton-c-mbed wolfSSL
RobotArmCfg.cpp@33:8b9dcbf6d8ec, 2016-02-04 (annotated)
- Committer:
- henryrawas
- Date:
- Thu Feb 04 20:10:33 2016 +0000
- Revision:
- 33:8b9dcbf6d8ec
- Parent:
- 29:2eec3e7d1ef5
update libs
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
henryrawas | 29:2eec3e7d1ef5 | 1 | // Copyright (c) Microsoft. All rights reserved. |
henryrawas | 29:2eec3e7d1ef5 | 2 | // Licensed under the MIT license. See LICENSE file in the project root for full license information. |
henryrawas | 29:2eec3e7d1ef5 | 3 | |
henryrawas | 27:4239713d9690 | 4 | #include "mbed.h" |
henryrawas | 27:4239713d9690 | 5 | #include "SDFileSystem.h" |
henryrawas | 27:4239713d9690 | 6 | #include "ConfigFile.h" |
henryrawas | 27:4239713d9690 | 7 | |
henryrawas | 27:4239713d9690 | 8 | #include "RobotArmCfg.h" |
henryrawas | 27:4239713d9690 | 9 | |
henryrawas | 27:4239713d9690 | 10 | SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd"); //MOSI, MISO, SCLK, SSEL |
henryrawas | 27:4239713d9690 | 11 | |
henryrawas | 27:4239713d9690 | 12 | ConfigFile cfg; |
henryrawas | 27:4239713d9690 | 13 | |
henryrawas | 27:4239713d9690 | 14 | // connection string filled in from configuration file |
henryrawas | 27:4239713d9690 | 15 | // if not using input.cfg configuration file specify connection string here |
henryrawas | 27:4239713d9690 | 16 | // String containing IoT hub Hostname, Device Id & Device Key in the format: |
henryrawas | 27:4239713d9690 | 17 | // "HostName=<host_name>;DeviceId=<device_id>;SharedAccessKey=<device_key>" |
henryrawas | 27:4239713d9690 | 18 | char* connectionString = "[device connection string]"; |
henryrawas | 27:4239713d9690 | 19 | |
henryrawas | 27:4239713d9690 | 20 | // specify joints in arm |
henryrawas | 27:4239713d9690 | 21 | // if not using input.cfg configuration file specify joints here |
henryrawas | 27:4239713d9690 | 22 | //static NodeCfg ArmJoints[NUMJOINTS] = { |
henryrawas | 27:4239713d9690 | 23 | // { NT_AX12, 2 }, |
henryrawas | 27:4239713d9690 | 24 | // { NT_AX12, 3 }, |
henryrawas | 27:4239713d9690 | 25 | // { NT_AX12, 4 }, |
henryrawas | 27:4239713d9690 | 26 | // { NT_AX12, 6 }, |
henryrawas | 27:4239713d9690 | 27 | // { NT_AX12, 1 } |
henryrawas | 27:4239713d9690 | 28 | //}; |
henryrawas | 27:4239713d9690 | 29 | |
henryrawas | 27:4239713d9690 | 30 | // joints array filled in from configuration file |
henryrawas | 27:4239713d9690 | 31 | NodeCfg ArmJoints[NUMJOINTS]; |
henryrawas | 27:4239713d9690 | 32 | |
henryrawas | 27:4239713d9690 | 33 | // read config values from file input.cfg on SD card |
henryrawas | 27:4239713d9690 | 34 | // example format of file is |
henryrawas | 27:4239713d9690 | 35 | // JointType_0=AX12 |
henryrawas | 27:4239713d9690 | 36 | // JointType_1=AX12 |
henryrawas | 27:4239713d9690 | 37 | // JointType_2=AX12 |
henryrawas | 27:4239713d9690 | 38 | // JointType_3=AX12 |
henryrawas | 27:4239713d9690 | 39 | // JointType_4=AX12 |
henryrawas | 27:4239713d9690 | 40 | // JointId_0=2 |
henryrawas | 27:4239713d9690 | 41 | // JointId_1=3 |
henryrawas | 27:4239713d9690 | 42 | // JointId_2=4 |
henryrawas | 27:4239713d9690 | 43 | // JointId_3=6 |
henryrawas | 27:4239713d9690 | 44 | // JointId_4=1 |
henryrawas | 27:4239713d9690 | 45 | // IoTConnection=HostName=[device connection string] |
henryrawas | 27:4239713d9690 | 46 | // |
henryrawas | 27:4239713d9690 | 47 | bool ReadConfigValues() |
henryrawas | 27:4239713d9690 | 48 | { |
henryrawas | 27:4239713d9690 | 49 | char value[BUFSIZ]; |
henryrawas | 27:4239713d9690 | 50 | bool rc = true; |
henryrawas | 27:4239713d9690 | 51 | |
henryrawas | 27:4239713d9690 | 52 | printf("Reading config\r\n"); |
henryrawas | 27:4239713d9690 | 53 | |
henryrawas | 27:4239713d9690 | 54 | /* Read a configuration file from a mbed. */ |
henryrawas | 27:4239713d9690 | 55 | if (!cfg.read("/sd/input.cfg")) { |
henryrawas | 27:4239713d9690 | 56 | // sometimes fails first time. Try again |
henryrawas | 27:4239713d9690 | 57 | if (!cfg.read("/sd/input.cfg")) { |
henryrawas | 27:4239713d9690 | 58 | printf("Failure to read a configuration file.\r\n"); |
henryrawas | 27:4239713d9690 | 59 | rc = false; |
henryrawas | 27:4239713d9690 | 60 | } |
henryrawas | 27:4239713d9690 | 61 | } |
henryrawas | 27:4239713d9690 | 62 | |
henryrawas | 27:4239713d9690 | 63 | /* Get configuration values. */ |
henryrawas | 27:4239713d9690 | 64 | if (cfg.getValue("IoTConnection", &value[0], sizeof(value))) { |
henryrawas | 27:4239713d9690 | 65 | int len = strlen(value) + 1; |
henryrawas | 27:4239713d9690 | 66 | connectionString = (char*)malloc(len); |
henryrawas | 27:4239713d9690 | 67 | strcpy(connectionString, value); |
henryrawas | 27:4239713d9690 | 68 | } |
henryrawas | 27:4239713d9690 | 69 | else |
henryrawas | 27:4239713d9690 | 70 | { |
henryrawas | 27:4239713d9690 | 71 | printf("Failure to read a configuration file value IoTConnection.\r\n"); |
henryrawas | 27:4239713d9690 | 72 | rc = false; |
henryrawas | 27:4239713d9690 | 73 | } |
henryrawas | 27:4239713d9690 | 74 | |
henryrawas | 27:4239713d9690 | 75 | for (int ix = 0; ix < NUMJOINTS; ix++) |
henryrawas | 27:4239713d9690 | 76 | { |
henryrawas | 27:4239713d9690 | 77 | char key[20]; |
henryrawas | 27:4239713d9690 | 78 | |
henryrawas | 27:4239713d9690 | 79 | sprintf(key, "JointType_%d", ix); |
henryrawas | 27:4239713d9690 | 80 | if (cfg.getValue(key, &value[0], sizeof(value))) { |
henryrawas | 27:4239713d9690 | 81 | ArmJoints[ix].JointType = NT_AX12; |
henryrawas | 27:4239713d9690 | 82 | } |
henryrawas | 27:4239713d9690 | 83 | else |
henryrawas | 27:4239713d9690 | 84 | { |
henryrawas | 27:4239713d9690 | 85 | printf("Failure to read a configuration file value %s.\r\n", key); |
henryrawas | 27:4239713d9690 | 86 | rc = false; |
henryrawas | 27:4239713d9690 | 87 | } |
henryrawas | 27:4239713d9690 | 88 | sprintf(key, "JointId_%d", ix); |
henryrawas | 27:4239713d9690 | 89 | if (cfg.getValue(key, &value[0], sizeof(value))) { |
henryrawas | 27:4239713d9690 | 90 | ArmJoints[ix].JointId = atoi(value); |
henryrawas | 27:4239713d9690 | 91 | } |
henryrawas | 27:4239713d9690 | 92 | else |
henryrawas | 27:4239713d9690 | 93 | { |
henryrawas | 27:4239713d9690 | 94 | printf("Failure to read a configuration file value %s.\r\n", key); |
henryrawas | 27:4239713d9690 | 95 | rc = false; |
henryrawas | 27:4239713d9690 | 96 | } |
henryrawas | 27:4239713d9690 | 97 | } |
henryrawas | 27:4239713d9690 | 98 | |
henryrawas | 27:4239713d9690 | 99 | return rc; |
henryrawas | 27:4239713d9690 | 100 | } |