Function-definition is not allowed here before '{' token

I am using an Ardumoto for my project and am getting this error

“a function-definition is not allowed here before ‘{’ token”

can someone help me understand why this is occurring. this is my code.

/* Ardumoto Example Sketch
by: Jim Lindblom
date: November 8, 2013
license: Public domain. Please use, reuse, and modify this
sketch!

Adapted to v20 hardware by: Marshall Taylor
date: March 31, 2017

Three useful functions are defined:
setupArdumoto() – Setup the Ardumoto Shield pins
driveArdumoto([motor], [direction], [speed]) – Drive [motor]
(0 for A, 1 for B) in [direction] (0 or 1) at a [speed]
between 0 and 255. It will spin until told to stop.
stopArdumoto([motor]) – Stop driving [motor] (0 or 1).

setupArdumoto() is called in the setup().
The loop() demonstrates use of the motor driving functions.
*/

/* Clockwise and counter-clockwise definitions.
Depending on how you wired your motors, you may need to swap.*/
#define FORWARD 0
#define REVERSE 1

// Motor definitions to make life easier:
#define MOTOR_A 0
#define MOTOR_B 1

// Pin Assignments //
//Default pins:
#define DIRA 2 // Direction control for motor A
#define PWMA 3 // PWM control (speed) for motor A
#define DIRB 4 // Direction control for motor B
#define PWMB 11 // PWM control (speed) for motor B

/*Alternate pins:
#define DIRA 8 // Direction control for motor A
#define PWMA 9 // PWM control (speed) for motor A
#define DIRB 7 // Direction control for motor B
#define PWMB 10 // PWM control (speed) for motor B
*/
// motor one
int enA = 10;
int in1 = 9;
int in2 = 8;

// motor two
int enB = 5;
int in3 = 7;
int in4 = 6;
void setup()
{
// set all the motor control pins to outputs
pinMode(enA, OUTPUT);
pinMode(enB, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);

void setup()

{
setupArdumoto(); // Set all pins as outputs
}

void loop()

{
// Drive motor A (and only motor A) at various speeds, then stop.
driveArdumoto(MOTOR_A, REVERSE, 255); // Set motor A to REVERSE at max
delay(1000); // Motor A will spin as set for 1 second
driveArdumoto(MOTOR_A, FORWARD, 127); // Set motor A to FORWARD at half
delay(1000); // Motor A will keep trucking for 1 second
stopArdumoto(MOTOR_A); // STOP motor A

// Drive motor B (and only motor B) at various speeds, then stop.
driveArdumoto(MOTOR_B, REVERSE, 255); // Set motor B to REVERSE at max
delay(1000); // Motor B will spin as set for 1 second
driveArdumoto(MOTOR_B, FORWARD, 127); // Set motor B to FORWARD at half
delay(1000); // Motor B will keep trucking for 1 second
stopArdumoto(MOTOR_B); // STOP motor B

// Drive all
driveArdumoto(MOTOR_A, FORWARD, 255); // Motor A at max speed.
driveArdumoto(MOTOR_B, FORWARD, 255); // Motor B at max speed.
driveArdumoto(MOTOR_C, FORWARD, 255); // Motor C at max speed.
driveArdumoto(MOTOR_D, FORWARD, 255); // Motor D at max speed.
delay(1000); // Drive forward for a second
// Now go backwards at half that speed
driveArdumoto(MOTOR_A, REVERSE, 127); // Motor A at half speed.
driveArdumoto(MOTOR_B, REVERSE, 127); // Motor B at half speed.
driveArdumoto(MOTOR_C, REVERSE, 127); // Motor C at half speed.
driveArdumoto(MOTOR_D, REVERSE, 127); // Motor D at half speed.
delay(1000); // Drive forward for a second

// Now spin in place!
driveArdumoto(MOTOR_A, FORWARD, 255); // Motor A at max speed.
driveArdumoto(MOTOR_B, REVERSE, 255); // Motor B at max speed.
delay(2000); // Drive forward for a second
stopArdumoto(MOTOR_A); // STOP motor A
stopArdumoto(MOTOR_B); // STOP motor B

}

// driveArdumoto drives ‘motor’ in ‘dir’ direction at ‘spd’ speed
void driveArdumoto(byte motor, byte dir, byte spd)

if (motor == MOTOR_A)
}
{
digitalWrite(DIRA, dir);
analogWrite(PWMA, spd);
}
else if (motor == MOTOR_B)
{
digitalWrite(DIRB, dir);
analogWrite(PWMB, spd);
}

// stopArdumoto makes a motor stop
void stopArdumoto(byte motor)
{
driveArdumoto(motor, 0, 0);
}

// setupArdumoto initialize all pins
void setupArdumoto()
{
// All pins should be setup as outputs:
pinMode(PWMA, OUTPUT);
pinMode(PWMB, OUTPUT);
pinMode(DIRA, OUTPUT);
pinMode(DIRB, OUTPUT);

// Initialize all pins as low:
digitalWrite(PWMA, LOW);
digitalWrite(PWMB, LOW);
digitalWrite(DIRA, LOW);
digitalWrite(DIRB, LOW);
}

Sumo_bot_code.ino (4.28 KB)

A very helpful troubleshooting tool is the Auto Format feature (Tools > Auto Format in the Arduino IDE or Ctrl + B in the Arduino Web Editor). If you do an Auto Format and then compare the resulting indentation to your intended program structure, it will quickly point you to where there is a missing or extra brace.

Another useful feature of the Arduino IDE/Arduino Web Editor is that when you place the cursor next to one bracket, it puts a box around the matching bracket. In the Arduino IDE, if the cursor is next to the closing bracket and the opening bracket is off the screen then it will show the opening bracket line in a tool tip after a short delay.

Is it really so difficult to read a few simple, clearly-posted and marked topics before posting?

Why do people seem so Hell-bent on avoiding getting help?