Skip to content

Commit

Permalink
Allow reassignment of led pin to servos or motors
Browse files Browse the repository at this point in the history
  • Loading branch information
mmosca committed May 11, 2024
1 parent 71ac169 commit c98bf6e
Show file tree
Hide file tree
Showing 5 changed files with 21 additions and 7 deletions.
2 changes: 1 addition & 1 deletion js/bitHelper.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ var BitHelper = function() {
}

self.bit_check = function (num, bit) {
return ((num >> bit) % 2 != 0);
return ((1 << bit) & num) != 0;
}

self.bit_set = function (num, bit) {
Expand Down
1 change: 1 addition & 0 deletions js/msp/MSPCodes.js
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,7 @@ var MSPCodes = {
MSP2_INAV_MC_BRAKING: 0x200B,
MSP2_INAV_SET_MC_BRAKING: 0x200C,
MSPV2_INAV_OUTPUT_MAPPING_EXT: 0x200D,
MSPV2_INAV_OUTPUT_MAPPING_EXT2: 0x210D,
MSP2_INAV_TIMER_OUTPUT_MODE: 0x200E,
MSP2_INAV_SET_TIMER_OUTPUT_MODE: 0x200F,

Expand Down
11 changes: 7 additions & 4 deletions js/msp/MSPHelper.js
Original file line number Diff line number Diff line change
Expand Up @@ -1423,18 +1423,20 @@ var mspHelper = (function () {
case MSPCodes.MSP2_INAV_SET_CUSTOM_OSD_ELEMENTS:
console.log('OSD custom elements preferences saved');
break;
/*
case MSPCodes.MSPV2_INAV_OUTPUT_MAPPING:
FC.OUTPUT_MAPPING.flush();
for (let i = 0; i < data.byteLength; ++i)
FC.OUTPUT_MAPPING.put({
'timerId': i,
'usageFlags': data.getUint8(i)});
break;
case MSPCodes.MSPV2_INAV_OUTPUT_MAPPING_EXT:
*/
case MSPCodes.MSPV2_INAV_OUTPUT_MAPPING_EXT2:
FC.OUTPUT_MAPPING.flush();
for (let i = 0; i < data.byteLength; i += 2) {
for (let i = 0; i < data.byteLength; i += 5) {
let timerId = data.getUint8(i);
let usageFlags = data.getUint8(i + 1);
let usageFlags = data.getUint32(i + 1, true);
FC.OUTPUT_MAPPING.put(
{
'timerId': timerId,
Expand Down Expand Up @@ -2784,11 +2786,12 @@ var mspHelper = (function () {
};

self.loadOutputMapping = function (callback) {
alert('Obsolete MSPHelper.loadOutputMapping call');
MSP.send_message(MSPCodes.MSPV2_INAV_OUTPUT_MAPPING, false, false, callback);
};

self.loadOutputMappingExt = function (callback) {
MSP.send_message(MSPCodes.MSPV2_INAV_OUTPUT_MAPPING_EXT, false, false, callback);
MSP.send_message(MSPCodes.MSPV2_INAV_OUTPUT_MAPPING_EXT2, false, false, callback);
};

self.loadTimerOutputModes = function(callback) {
Expand Down
13 changes: 11 additions & 2 deletions js/outputMapping.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ var OutputMappingCollection = function () {

const OUTPUT_TYPE_MOTOR = 0;
const OUTPUT_TYPE_SERVO = 1;
const OUTPUT_TYPE_LED = 2;

self.TIMER_OUTPUT_MODE_AUTO = 0;
self.TIMER_OUTPUT_MODE_MOTORS = 1;
Expand Down Expand Up @@ -98,6 +99,7 @@ var OutputMappingCollection = function () {
outputMap = [],
offset = getFirstOutputOffset();


for (let i = 0; i < self.getOutputCount(); i++) {

let assignment = timerMap[i + offset];
Expand All @@ -110,6 +112,8 @@ var OutputMappingCollection = function () {
} else if (assignment == OUTPUT_TYPE_SERVO) {
outputMap[i] = "Servo " + servos[currentServoIndex];
currentServoIndex++;
} else if (assignment == OUTPUT_TYPE_LED) {
outputMap[i] = "Led";
}
}

Expand All @@ -126,12 +130,17 @@ var OutputMappingCollection = function () {

self.getOutputCount = function () {
let retVal = 0;
let testFlag = 1 << TIM_USE_LED;
testFlag = testFlag + 1;

for (let i = 0; i < data.length; i++) {
let flags = data[i]['usageFlags'];
if (
BitHelper.bit_check(data[i]['usageFlags'], TIM_USE_MOTOR) ||
BitHelper.bit_check(data[i]['usageFlags'], TIM_USE_SERVO)
BitHelper.bit_check(flags, TIM_USE_MOTOR) ||
BitHelper.bit_check(flags, TIM_USE_SERVO) ||
BitHelper.bit_check(flags, TIM_USE_LED)
) {
//alert("Found motor, servo or led");
retVal++;
};
}
Expand Down
1 change: 1 addition & 0 deletions tabs/mixer.js
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,7 @@ TABS.mixer.initialize = function (callback, scrollPosition) {
'<option value=' + FC.OUTPUT_MAPPING.TIMER_OUTPUT_MODE_AUTO + '' + (usageMode == FC.OUTPUT_MAPPING.TIMER_OUTPUT_MODE_AUTO ? ' selected' : '')+ '>AUTO</option>'+
'<option value=' + FC.OUTPUT_MAPPING.TIMER_OUTPUT_MODE_MOTORS + '' + (usageMode == FC.OUTPUT_MAPPING.TIMER_OUTPUT_MODE_MOTORS ? ' selected' : '')+ '>MOTORS</option>'+
'<option value=' + FC.OUTPUT_MAPPING.TIMER_OUTPUT_MODE_SERVOS + '' + (usageMode == FC.OUTPUT_MAPPING.TIMER_OUTPUT_MODE_SERVOS ? ' selected' : '')+ '>SERVOS</option>'+
'<option value=' + FC.OUTPUT_MAPPING.TIMER_OUTPUT_MODE_LED + '' + (usageMode == FC.OUTPUT_MAPPING.TIMER_OUTPUT_MODE_LED ? ' selected' : '')+ '>LED</option>'+
'</select>' +
'<label for="timer-output-' + t + '">' +
'<span> Timer ' + (parseInt(t) + 1) + '</span>' +
Expand Down

0 comments on commit c98bf6e

Please sign in to comment.